排序(2)

下介绍经典排序算法的空间复杂度
O(1)
插入排序、选择排序、冒泡排序(时间复杂度O(N^2))
推排序、希尔排序
O(logN)~O(N)
快速排序
O(N)
归并排序
O(M)
计数排序、基数排序 M为桶的数量

排序算法-稳定性
概念:假定待排序的记录序列中,存在多个具有相同关键字的记录,若经过排序,这些记录的相对次序保持不变,称这种排序算法是稳定的,否则称为不稳定的。

稳定的排序算法
冒泡排序、插入排序、归并排序、计数排序、基数排序、桶排序

不稳定的排序算法
选择排序、堆排序、快速排序、希尔排序

这里写图片描述

这里写图片描述

这里写图片描述

希尔排序交换位置,就会不稳定。

补充说明
1.排序算法无绝对优劣
算法效果取决于排序的元素。例如人身高,数值范围小,可以选择计数排序,但对于均匀分布的整数,计数排序就不合适了。除非面试特别说明,否则理解为均匀分布。

2.为何叫快速排序
快速排序并不代表它比堆排序和归并排序优良。在最好的情况下,它的渐进复杂度与堆排序和归并排序是相同的。只是它的常亮系数比较小。
算法效果取决于排序的元素。例如人身高,数值范围小,可以选择计数排序,但对于均匀分布的整数,计数排序就不合适了。除非面试特别说明,否则理解为均匀分布。

3.工程上的排序
1、工程上是综合排序
2、数组较小时,插入排序
3、数组较大时,快速排序或其它O(N*logN)的排序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章