Select排序说明
Select sort explain
我无法理解其中整数从最低值到最高值重新排列的选择排序算法。这是代码:
#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
),对于列表中的每个整数,它将当前整数与其余整数中的最小整数交换列表。
但要做到这一点,它需要先找到它。这是第二个 for
出现的地方。它遍历列表的其余部分(因为它从 i
而不是 0
开始),并记住位置 (iMin
) 的最小整数。
我无法理解其中整数从最低值到最高值重新排列的选择排序算法。这是代码:
#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
),对于列表中的每个整数,它将当前整数与其余整数中的最小整数交换列表。
但要做到这一点,它需要先找到它。这是第二个 for
出现的地方。它遍历列表的其余部分(因为它从 i
而不是 0
开始),并记住位置 (iMin
) 的最小整数。