算法-选择排序
算 法:选择排序算法
时间复杂度:$O(n^2)$
- 选择排序算法概述
- 选择排序伪代码
- 选择排序实现
选择排序算法概述
排序算法有许多,选择排序也是其中一种较为简单的方法。它的算法过程是是每一趟将当前数与后面的每一个数进行比较,若不满足排序所需顺序则交换两个数的位置,这样第一趟比较结束后,第一个数就是正确顺序的数,第$i$趟排序结束后,第$i$个位置的数都为正确的数,这个算法也被通俗地成称为“打擂台”,第一趟选择最大(最小)的数,第二趟选择出次大(次小)的数,一直到完成整个排序过程。
选择排序算法描述
- 第$i$趟“打擂台”过程从序列第$i$个元素开始遍历至尾部;
- 对于每一趟“打擂台”的选择过程,比较正在遍历的元素与第$i$个元素的大小关系,不满足,则交换两者位置;
- 持续1-2步骤直到每个位置都当过“擂主”。
选择排序示例
正在排序的数加粗表示3,排序后的数放于中括号内[3],将被交换的数用斜体表示3
未排序: 5 31 16 9 7 10 3
第一趟:
** 5 ** 31 16 9 7 10 3
[3] 31 16 7 9 10 5
第二趟:
[3] 31 16 9 7 10 5
[3 5] 16 7 9 10 31
第三趟:
[3 5]16 9 7 10 31
[3 5] 9 16 7 10 31
[3 5 7] 16 9 10 31
第四趟:
[3 5 7]16 9 10 31
[3 5 7 9] 16 10 31
第五趟:
[3 5 7 9] 16 10 31
[3 5 7 9 10] 16 31
第六趟:
[3 5 7 9 10] 16 31
[3 5 7 9 10 16] 31
[3 5 7 9 10 16 31]
选择排序伪代码
SELECTIONSORT(A)
1 | for i = 1 to A.length - 1 |
选择排序实现
C
1 | void selectionSort(arrType* a, int arrLength) |
Pascal
1 | procedure selectionsort; |
参考资料
- 《Free Pascal语言与基础算法》