冒泡排序又是那里错了?
#include<bits/stdc++.h>//万能头文件using namespace std;
int main()
{
int arr={4,85,3,234,45,345,345,122,30,12};
for(int i=0;i<10;i++)
{
for(int j=0;j<10-i-1;j++)
{
if(arr>arr)
{
int temp=arr;
arr=arr;
arr=temp;
}
}
cout<<arr<<endl;
}
}
冒泡排序算法的实现基本正确,但是在输出排序结果时存在一个问题。在内层循环中,每次比较并交换元素后,最大的元素会被移动到数组的末尾。然而,你在每次外层循环结束后,使用cout语句输出的是当前位置的元素,而不是排序后的结果。
要正确输出排序结果,你需要将cout语句移动到外层循环的结束位置,即将cout<<arr[ i]<<endl;移动到外层循环的大括号"}"之后。
修改后的代码如下:
#include<bits/stdc++.h>//万能头文件
using namespace std;
int main()
{
int arr={4,85,3,234,45,345,345,122,30,12};
for(int i=0;i<10;i++)
{
for(int j=0;j<10-i-1;j++)
{
if(arr>arr)
{
int temp=arr;
arr=arr;
arr=temp;
}
}
}
for(int i=0;i<10;i++)
{
cout<<arr[ i]<<endl;
}
} 你的冒泡排序算法本身没有问题,但是你在排序过程中就试图输出排序结果,这是不正确的。你应该在整个排序过程完成后再输出排序结果。以下是修改后的代码:
#include<bits/stdc++.h> //万能头文件
using namespace std;
int main()
{
int arr={4,85,3,234,45,345,345,122,30,12};
for(int i=0;i<10;i++)
{
for(int j=0;j<10-i-1;j++)
{
if(arr>arr)
{
int temp=arr;
arr=arr;
arr=temp;
}
}
}
for(int i=0;i<10;i++)
{
cout<<arr[ i]<<endl;
}
return 0;
}
在这个修改后的代码中,我添加了一个新的循环来输出排序后的数组。这样,你就可以在整个排序过程完成后看到排序的结果了。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
页:
[1]