我在理解选择排序算法时遇到问题,其中整数从最低值到最高值重新排列。这是代码:
#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]<<" ";
}
有人可以通过详细解释整数是如何重新排列并对每一行给出一些评论来帮助我吗?也许它很容易,但我在编程方面很愚蠢。 :(
答案 0 :(得分:1)
在编码中,每一行中的注释通常都没有意义,因为线本身通常非常清楚地说明它的作用。重要的是结构。
您的算法所做的是从头到尾(第一个for
)通过列表,对于列表中的每个整数,它将当前整数与列表其余部分中的最小整数交换。
但要做到这一点,它需要先找到它。这是第二个for
进来的地方。它遍历列表的其余部分(因为它从i
开始而不是0
),并记住位置({{1} })最小整数。