Problem5795--学习系列——排序——选择排序

5795: 学习系列——排序——选择排序

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

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)$。

Input

1

Output

1

Sample 1 Input

1

Sample 1 Output

1

Source/Category