冒泡排序的问题在于条件判断部分出现了错误。
请注意修改以下代码段: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;}
修改后的代码可以正确输出排序前和排序后的结果。
球一个最佳答案谢谢啦!这对我非常重要!   |