为什么选择排序中的for循环有n-1步而不是n步? C++

Why does the for loop in selection sort have n-1 steps instead of n? C++

我有以下尝试用 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;
}

根据我的测试,它 returns 排序数组,所以我认为它是正确的。

但是我也必须解释为什么排序的主for循环只需要n-1步而不是n步。谁能给我解释一下 "why" 部分?

如果 n 为 1,请考虑需要多少步。

基本上,您不需要对第一个元素进行排序。

排序是通过比较个元素来完成的。

N 个元素的数组中有多少对? (提示:N-1)

This animation 可能有助于解释该算法的工作原理。