重点从时间复杂度、空间复杂度、适用情况等多个方面进行综合比较。
1.简单选择排序
(1)基本原理:对于给定的一组记录,经过第一轮比较后得到最小的值,然后将该记录与第一个记录的位置进行交换;
接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小记录并与第二个记录进行位置交换;重复该过程,
直到进行比较的记录只有一个为止。
(2)特点:交换移动的数据次数比较少。
(3)算法时间复杂度:O(n^2)。辅助空间O(1)。
(4)程序设计要点:嵌套循环,记录最小数和最小数的位置。
2.快速排序
(1)基本原理:先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移动到数组的左边,
比选择的数字大的数字移到数组的右边。然后用递归的思路分别对每次选中的数字左右两边进行排序。
当初始序列整体或者局部有序时,快速排序的性能会下降,此时快速排序将退化为冒泡排序。
(2)算法最好时间复杂度O(nlogn)(每次区间划分,基准关键字为待排序的记录中间值)
最坏的时间复杂度O(n^2) (每次区间划分,基准关键字左边或者右边序列为空,而另一边的记录只比原来少了一项)
平均时间复杂度O(nlogn)
空间复杂度O(logn)