针对常见的8种排序算法,下面做个归纳总结(要注意多多记忆):
排序算法 | 平均时间复杂度 | 辅助空间 | 稳定性 |
插入排序 | n2 | 1 | 稳定 |
选择排序 | n2 | 1 | 不稳定 |
冒泡排序 | n2 | 1 | 稳定 |
shell排序 | n1.3 | 1 | 不稳定 |
快速排序 | nlog(n) | log(n) | 不稳定 |
堆排序 | nlog(n) | 1 | 不稳定 |
归并排序 | nlog(n) | n | 稳定 |
基数排序 | d(n+d) | rd | 稳定 |
根据上面的表格得到下面的几个结论:
1.如果数据量比较小,则可以倾向于选择插入排序和选择排序。
2.如果数据基本排序成功,则可以倾向于选择插入排序和冒泡排序。
3.如果数据量比较大,并且关键字的位数比较小的时候,则可以选择链式基数排序。
4.如果数据量比较大,则选择时间复杂度比较小的快速排序,归并排序和堆排序。