3、选择排序
从当前没有排过序的数中挑一个最小的数,把它放在已经排序的数组列表最后
要点:选择最小的值,往左边放
void SelectSort(int* List, int N) // N = 数组大小,数组大小控制循环次数。
{
// 外循环控制循环次数 n次
for (int i = 0; i < N; i++)
{
int min = i; // min就是手绢(下标/索引),这个手绢要丢到岁数最小的人面前,假设i就是最小的。
/* 每循环一次就会找出一个最小值放到左边,已经放到左边的数就不用管了,
所以每次内循环都不是从0开始,而是从i + 1处开始 */
for (int j = i + 1; j < N; j++)
{
// 如果你比拥有手绢的人的岁数还小, 那就把手绢丢给你。
if (List[j] < List[min])
{
// 把手绢丢给这个被找到岁数更小的 j 个人。(记录下标)
min = j;
}
}
/* 内循环结束后把岁数最小的人交换到左边去,每换一个人到最左边,那下次就不用再管
这个人了,也就是i++,所以把List[min]换到List[i]处。 */
// 把下标是min的数,交换到下标为i的元素处。
Swap(List[i], List[min]);
}