我有以下尝试在C ++中编写选择排序:
#include <iostream>
using namespace std;
int main()
{
int a[10], k, i, j, n, aux;
cin >> n;
for (i = 0; i <= n-1; i++)
cin >> a[i];
k = a[0];
for (i = 0; i <= n - 2; i++) {
for (j = i + 1; j <= n-1; j++)
if (k > a[j])
k = a[j];
for (j = i + 1; j <= n-1; j++)
if (k == a[j]) {
aux = a[i];
a[i] = a[j];
a[j] = aux;
}
k = a[i + 1];
}
for (i = 0; i <= n-1; i++)
cout << a[i];
return 0;
}
从我的测试中它返回排序的数组,所以我认为这是正确的。
但我还必须解释为什么排序的主要for循环只需要n-1步而不是n。任何人都可以向我解释“为什么”的一部分?
答案 0 :(得分:3)
如果n
为1,请考虑需要多少步骤。
基本上,您不需要对第一个元素进行排序。
答案 1 :(得分:3)