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