排序是最基本也是最常用的算法之一。
常用的几个排序算法是:
这些排序算法的基本性质和特点如下:
冒泡排序,插入排序,选择排序的平均时间复杂度都是:O(n2)
合并排序,堆排序,快速排序的平均时间复杂度都是:O(n*log2n)
冒泡排序,插入排序,选择排序的空间复杂度都是:O(1)
合并排序的空间复杂度是:O(n),(占用空间较多)
堆排序的空间复杂度是:O(1)
快速排序的空间复杂度是:O(log2n)~O(n)
冒泡排序,插入排序 是稳定的排序算法。
选择排序 是不稳定的排序算法。
堆排序,快速排序 是不稳定的排序算法。
堆排序 是不稳定的排序算法。
注:是否稳定指的是排序过程中重复值的相对位置是否改变。
应用题:
- 调度,
- 负载均衡,
- 逆域名排序,
- 垃圾邮件大战
- 公正的选举,
- 计算Kendall tau 距离,
- 空闲时间,
- 多维排序,
- 股票交易,
- 简单多边形,
- 文件名排序,