排序算法总结

一、内排序算法分为:插入排序、交换排序、选择排序和归并排序四类
  • 希尔排序相当于直接插入排序的升级,它们同属于插入排序类;
  • 堆排序相当于简单选择排序的升级,它们同属于选择排序类;
  • 快速排序相当于冒泡排序的升级,它们同属于交换排序类。


二、7种算法的性能指标:


三、性能分析

从算法的简单性来看,我们将7种算法分为两类:

  • 简单算法:冒泡、简单选择、直接插入
  • 改进算法:希尔、堆、归并、快速

  • 时间复杂度看:
  • 平均情况来看,改进算法中,堆、归并、快速排序要胜过希尔排序,并远远胜过冒泡、简单选择、直接插入这3种简单算法
  • 最好情况看,反而冒泡和直接插入排序要更胜一筹,也就是说,如果你的待排序序列总是基本有序,反而不应该考虑复杂的改进算法
  • 最坏情况看,堆排序与归并排序又强过快速排序以及其他简单排序。
  • 从这三组时间复杂度的数据对比中,我们可以得出这样一个认识:堆排序和归并排序就像两个参加奥数考试的优等生,心理素质强,发挥稳定。而快速排序像是很情绪化的天才,心情好时表现极佳,碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法,它们反而算不过成绩极普通的冒泡和直接插入。

  • 空间复杂度看,堆排序是好的选择

  • 稳定性来看,归并排序是好的选择

总之,从综合各项指标来说,经过优化的快速排序是性能最好的排序算法,但是不同的场合我们也应该考虑使用不同的算法来应对它。

参考文献:《大话数据结构》—— 程杰著

你可能感兴趣的:(排序算法总结)