|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream>
using namespace std;
int main()
{
int arr[]={4,2,8,0,5,7,1,3,9};
cout<<"排序前的结果"<<endl;
for(int i=0;i<9;i++)
{
cout<<arr[i]<<' ';
}
//总排序轮数
for(int j=0;j<9-1;j++)
{//内层循环对比 次数=元素个数 -当前轮数-1
for(int k=0;k<9-j-1;k++)
{
//如果第一个数字比第二个数字打,则交换两个数字
if(arr[k]>arr[k=1])
{
int temp=arr[k];
arr[k]=arr[k+1];
arr[k+1]=temp;
}
}
}
cout<<"排序后的结果是:"<<arr<<' ';
for(int k;k<=9;k++)
{
cout<<arr[k];
}
return 0;
}
冒泡排序的问题在于条件判断部分出现了错误。
请注意修改以下代码段:
- if(arr[k]>arr[k=1])
- {
- int temp=arr[k];
- arr[k]=arr[k+1];
- arr[k+1]=temp;
- }
复制代码
应该将 arr[k=1] 修正为 arr[k+1],即:
- if(arr[k] > arr[k+1])
- {
- int temp = arr[k];
- arr[k] = arr[k+1];
- arr[k+1] = temp;
- }
复制代码
此外,输出排序后的结果时,需要使用循环逐个输出数组元素,而不是直接输出数组名。完整修改后的代码如下所示:
- #include<iostream>
- using namespace std;
- int main()
- {
- int arr[] = {4,2,8,0,5,7,1,3,9};
-
- cout << "排序前的结果:" << endl;
- for(int i = 0; i < 9; i++)
- {
- cout << arr[i] << ' ';
- }
-
- for(int j = 0; j < 9-1; j++)
- {
- for(int k = 0; k < 9-j-1; k++)
- {
- if(arr[k] > arr[k+1])
- {
- int temp = arr[k];
- arr[k] = arr[k+1];
- arr[k+1] = temp;
- }
- }
- }
-
- cout << "\n排序后的结果是:";
- for(int k = 0; k < 9; k++)
- {
- cout << arr[k] << ' ';
- }
-
- return 0;
- }
复制代码
修改后的代码可以正确输出排序前和排序后的结果。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|