C++数据结构与算法\选择排序SelectSort()

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]);
    }
}
int main()
{
	int Num[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };	// 数组
	int Num_Size = sizeof(Num) / sizeof(int);		// 数组大小

	cout << "数组排序前:";
	for (int i = 0; i < Num_Size; ++i)
	{
		cout << Num[i] << '\t';
	}
	cout << endl;

	cout << "数组排序后:";
	SeleteSort(Num, Num_Size);
	for (int i = 0; i < Num_Size; ++i)
	{
		cout << Num[i] << '\t';
	}
}

你可能感兴趣的:(C++)