一、内排序算法分为:插入排序、交换排序、选择排序和归并排序四类
- 希尔排序相当于直接插入排序的升级,它们同属于插入排序类;
- 堆排序相当于简单选择排序的升级,它们同属于选择排序类;
-
快速排序相当于冒泡排序的升级,它们同属于交换排序类。
二、7种算法的性能指标:
三、性能分析
从算法的简单性来看,我们将7种算法分为两类:
- 简单算法:冒泡、简单选择、直接插入
- 改进算法:希尔、堆、归并、快速
- 从时间复杂度看:
- 从平均情况来看,改进算法中,堆、归并、快速排序要胜过希尔排序,并远远胜过冒泡、简单选择、直接插入这3种简单算法
- 从最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑复杂的改进算法
- 从最坏情况看,堆排序与归并排序又强过快速排序以及其他简单排序。
- 从这三组时间复杂度的数据对比中,我们可以得出这样一个认识:堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,它们反而算不过成绩极普通的冒泡和直接插入。
- 从空间复杂度看,堆排序是好的选择
- 从稳定性来看,归并排序是好的选择
总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是不同的场合我们也应该考虑使用不同的算法来应对它。
参考文献:《大话数据结构》—— 程杰著
网友评论