排序
排序分类:
按照待排记录是否全部被放置到内存中,可以分为内排序与外排序;
按照是否需要辅助空间,可以分为原址排序与非原址排序
按照两个相等的数排序后相对位置是否发生变化,可以分为稳定排序和不稳定排序;
按照是否有比较的排序,可以分为基于比较的排序与非基于比较的排序。
基于比较的排序:
- 交换排序:冒泡排序,快速排序
- 选择排序:简单选择排序
- 插入排序:直接插入排序,Shell排序
- 归并排序
上述最优的平均时间复杂度为 O(nlogn),空间复杂度为 O(1)。
非基于比较的排序:
- 计数排序
- 桶排序
最优平均时间复杂度为O(n),但应用场景有所限制。
相关参考:知乎链接