根据排序过程中借助的主要操作,我们将内排序分为四类:
- 插入排序类
- 直接插入排序
- 希尔排序
- 选择排序类
- 简单选择排序
- 堆排序
- 交换排序类
- 冒泡排序
- 快速排序
- 归并排序类
- 归并排序
从算法的简单性来看,我们将7种算法分为两类:
- 简单算法:冒泡排序、简单选择排序、直接插入排序
- 改进算法:希尔排序、堆排序、归并排序、快速排序
对7中算法的各种指标进行对比:
平均情况看:显然最后三种算法要胜过希尔算法,并远远超过前3种简单算法。
最好情况看:反而冒泡和直接插入排序要更胜一筹,也就是说,如果待排序序列总是基本有序,反而并应该考虑4种改进算法。
最坏情况看:堆排序与归并排序要强过与快速排序以及其他简单排序。
空间复杂度:归并排序的空间要求为O(n),快速排序为O(logn)~O(n),而其他几种排序空间要求均为O(1),
如果执行算法的软件所处的环境非常在乎内存的使用量时,选择归并排序和快速排序就不是一个较好的策略。
稳定性:归并排序独占鳌头,对于非常在乎排序稳定性的应用中,归并排序是个好算法。
待排序记录的个数:待排序的个数n越小,采用简单排序方法越合适。反之n越大,采用改进方法越合适。
这就是优化改进算法时增加一个阀值的原因,低于阀值时采用简单排序方法。
综合各项指标来说:经过优化的快速排序是性能最好的排序算法。
注:不同场合我们应该考虑使用不同的算法来应对它,以达到最优。具体问题具体对待。
时间: 2024-11-03 12:11:08