代码问题:
冒泡排序是一种通过相邻元素比较并交换位置的排序算法。在你的代码中,有一个小错误导致冒泡排序无法正确执行:for(int j=0;j<15-1;j++){ for(int k=0;k<15-j-1;j++) // 错误在这里,应该是 k++ 而不是 j++ { // 排序逻辑... }}
在内层循环中,进行比较和交换操作时,你使用了 j++,而实际上应该使用 k++,因为变量 k 才是用于遍历数组的索引变量。修正这个错误后,代码应该如下所示:for (int j = 0; j < 15 - 1; j++) { for (int k = 0; k < 15 - j - 1; k++) { // 修改为 k++ if (arr[k] > arr[k + 1]) { int temp = arr[k]; arr[k] = arr[k + 1]; arr[k + 1] = temp; } }}
其他建议:
1. 虽然你在输入数组元素之前声明了数组大小为 15,但最好在循环输入时根据输入个数进行判断,以防止输入超过数组大小。
2. 在输出排序后的数组时,可以在输出每个元素后添加一个空格,使结果更清晰。
修改后的代码示例:#include <iostream>using namespace std;int main(){ int arr[15] = {0}; for(int i = 0; i < 15; i++) { cin >> arr[i]; } for(int j = 0; j < 15 - 1; j++) { for(int k = 0; k < 15 - j - 1; k++) { if(arr[k] > arr[k + 1]) { int temp = arr[k]; arr[k] = arr[k+1]; arr[k+1] = temp; } } } for(int i = 0; i < 15; i++) { cout << arr[i] << " "; } return 0;}
希望这对你有帮助!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!   |