排序可以分为以下几个大类:
(1)插入排序:直接插入排序、折半插入排序和希尔排序
(2)交换排序:快速排序和冒泡排序
(3)选择排序:简单选择排序和堆排序
(4)外部排序:归并排序和基数排序
针对内部排序的效率总结:
(1)时间复杂度为 O(nlogn) 的有:希尔排序、快速排序和堆排序
(2)空间复杂度不为 O(1) 的有:快速排序,采用递归需要用到栈,所以 O(logn) ~ O(n)
(3)对于稳定性来说,只有三种排序是稳定的:插入排序的前两种和冒泡排序
(4)对于全局有序来说:选择排序和交换排序
对于数据初始状态总结:
(1)对于少量数据的排序 —— 直接插入和选择排序
(2)数据基本有序的情况 —— 直接插入、折半插入和冒泡排序(正序)
(3)中等规模的数据,最差和平均差不多 —— 希尔排序
(4)适用于数据规模较大的 —— 堆排序、归并排序、基数排序、快速排序
(5)数据规模较大,数据分布随机 —— 快速排序