选择排序的问题在于变量index的声明和使用。在您的代码中,您在内层循环中重新声明了一个新的index变量,这导致外层循环无法访问到正确的index值。
为了解决这个问题,您需要将内层循环中的int index = j;修改为index = j;,以便正确更新外层循环中的index变量。修正后的代码如下所示:#include <iostream>using namespace std;int main(){ int a[10]; int num; for (int i = 0; i < 10; i++) { cin >> num; a[i] = num; } for (int i = 0; i < 9; i++) { int minnum = a[i]; int index; bool flag = false; for (int j = i + 1; j < 10; j++) { if (a[j] < minnum) { index = j; // 修改此处 minnum = a[j]; flag = true; } } if (flag) { int temp = a[i]; a[i] = a[index]; a[index] = temp; } } for (int i = 0; i < 10; i++) { cout << a[i] << endl; } return 0;}
请注意,选择排序是一种简单但低效的排序算法。对于大型数据集,更好的选择可能是使用更高效的排序算法,如快速排序或归并排序。 |