C++ 选择排序解释

C++ 选择排序解释,c++,selection-sort,C++,Selection Sort,我在理解整数从最低值到最高值重新排列的选择排序算法时遇到问题。代码如下: #include<iostream> using namespace std; void SelectionSort(int A[], int n) { for (int i = 0; i < n-1; i++) { int iMin = i; for (int j = i+1; j < n; j++) { if

我在理解整数从最低值到最高值重新排列的选择排序算法时遇到问题。代码如下:

#include<iostream>
using namespace std;
void SelectionSort(int A[], int n)
{
    for (int i = 0; i < n-1; i++)
    {
        int iMin = i;
        for (int j = i+1; j < n; j++)
        {
            if (A[j] < A[iMin])
                iMin = j;
        }
        int temp = A[i];
        A[i] = A[iMin];
        A[iMin] = temp;
    }
}


int main()
{
    int A[] = {2, 4, 3, 5, 1};
    SelectionSort(A, 5);
    for (int i = 0; i < 5; i++)
        cout<<A[i]<<" ";

}

有人能帮我详细解释一下整数是如何重新排列的,并对每一行给出一些注释吗?也许这很容易,但我在编程方面很笨

在编码中,在每一行中写评论通常是没有意义的,因为这一行本身通常非常清楚地说明它的作用。但重要的是结构

您的算法所做的是从列表的开始到结束遍历第一个,对于列表中的每个整数,它将当前整数与列表其余部分中的最小整数交换。
但要做到这一点,它需要首先找到它。这就是第二个for出现的地方。它遍历列表的其余部分,因为它从i开始,而不是从0开始,并记住最小整数的位置iMin。

拿起笔和纸,一步一步地完成示例。写下您拥有的数据以及每次迭代的值。你会明白的,我投票结束这个问题,因为这是问答,不是聊天室。谢谢你,大卫。你能在这里再解释一下吗。int temp=A[i];A[i]=A[iMin];A[iMin]=temp?这只是交换两个数字。你不能只做a=b;b=a,因为此时a已更改为b。所以他们使用第三个变量temp来临时存储这一个变量。