冒泡排序哪里出错了
#include<iostream>using namespace std;
int main()
{
int arr = { 6, 76,93,85 ,34 ,75 ,15, 88 ,29 ,95 };
for (int i = 0; i < 10 - 1; i++)
{
for (int j = 0; j < 10 - i - 1; j++)
{
if (arr > arr)
{
int temp = arr;
arr = arr;
arr = temp;
}
}
cout << arr << "" << endl;
}
return 0;
} 冒泡排序是一种简单的排序算法,但是在你的代码中有一个错误。在交换两个元素的位置时,你使用了一个错误的变量名,导致排序结果不正确。
正确的代码应该是这样的:
#include<iostream>
using namespace std;
int main()
{
int arr = { 6 , 76 ,93 ,85 ,34 ,75 ,15 , 88 ,29 ,95 };
for (int i = 0; i < 10 - 1; 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] << " ";
}
return 0;
}
修正后的代码将会正确地对数组进行冒泡排序,并输出排序后的结果。 在冒泡排序的实现中,交换数组中相邻两个元素的位置是很关键的一个步骤。但是,在您的代码中,似乎出现了一个小错误,导致交换没有完成。
具体来说,您在交换数组中相邻两个元素的位置时,将temp的值赋给了arr,但是却没有将arr的值赋给arr,而是再次将arr的值赋给了arr,这显然是不正确的。这个错误可以通过更改以下代码来修复:
if (arr > arr)
{
int temp = arr;
arr = arr;
arr = temp; // 修正这里
}
此外,在每一轮内层循环结束后,您需要打印整个数组,以便查看排序进展情况。因此,将cout << arr << "" << endl;移动到外层循环之后,如下所示:
for (int i = 0; i < 10 - 1; i++)
{
for (int j = 0; j < 10 - i - 1; j++)
{
if (arr > arr)
{
int temp = arr;
arr = arr;
arr = temp; // 修正这里
}
}
// 将cout移动到外层循环之后
for (int j = 0; j < 10; j++)
{
cout << arr << " ";
}
cout << endl;
}
这样,就可以在每一轮排序结束后打印出当前的数组情况了。完整的修正后代码如下:
#include<iostream>
using namespace std;
int main()
{
int arr = { 6 , 76 ,93 ,85 ,34 ,75 ,15 , 88 ,29 ,95 };
for (int i = 0; i < 10 - 1; i++)
{
for (int j = 0; j < 10 - i - 1; j++)
{
if (arr > arr)
{
int temp = arr;
arr = arr;
arr = temp; // 修正这里
}
}
// 将cout移动到外层循环之后
for (int j = 0; j < 10; j++)
{
cout << arr << " ";
}
cout << endl;
}
return 0;
}
希望这个解答对您有所帮助,如果您还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]