5795: 学习系列——排序——选择排序
[Creator : ]
Description
选择排序就是重复“从待排序的数据中寻找最小值,将其与序列最左边的数字进行交换”这一操作的算法。在序列中寻找最小值时使用的是线性查找。
【选择排序过程】
1. 第一轮
对数字1~9 进行排序。使用线性查找在数据中寻找最小值,于是我们找到了最小值1。
将最小值1 与序列最左边的6 进行交换,最小值1 归位。不过,如果最小值已经在最左端,就不需要任何操作。
2. 第二轮
在余下的数据中继续寻找最小值。这次我们找到了最小值2。
将数字2 与左边第2 个数字6 进行交换,最小值2 归位。
3. 第 i 轮
重复同样的操作直到所有数字都归位为止。
排序完成。
【总结】
选择排序使用了线性查找来寻找最小值,因此在第1 轮中需要比较n - 1 个数字,第2 轮需要比较n - 2 个数字……到第n - 1 轮的时候就只需比较1 个数字了。因此,总的比较次数与冒泡排序的相同,都是 $(n - 1) + (n - 2) + … + 1 ≈ n^2/2$ 次。
选择排序的时间复杂度也和冒泡排序的一样,都为 $O(n^2)$。
【选择排序过程】
1. 第一轮
对数字1~9 进行排序。使用线性查找在数据中寻找最小值,于是我们找到了最小值1。
将最小值1 与序列最左边的6 进行交换,最小值1 归位。不过,如果最小值已经在最左端,就不需要任何操作。
2. 第二轮
在余下的数据中继续寻找最小值。这次我们找到了最小值2。
将数字2 与左边第2 个数字6 进行交换,最小值2 归位。
3. 第 i 轮
重复同样的操作直到所有数字都归位为止。
排序完成。
【总结】
选择排序使用了线性查找来寻找最小值,因此在第1 轮中需要比较n - 1 个数字,第2 轮需要比较n - 2 个数字……到第n - 1 轮的时候就只需比较1 个数字了。因此,总的比较次数与冒泡排序的相同,都是 $(n - 1) + (n - 2) + … + 1 ≈ n^2/2$ 次。
选择排序的时间复杂度也和冒泡排序的一样,都为 $O(n^2)$。
Input
1
Output
1
Sample 1 Input
1
Sample 1 Output
1