#排序算法#【6】排序算法总结

  前面几篇博客分别罗列和总结了近期学习的几种排序算法,今天总结一下。

  1. #排序算法#【1】概述、冒泡排序、选择排序
  2. #排序算法#【2】直接插入排序、希尔排序
  3. #排序算法#【3】堆排序
  4. #排序算法#【4】快速排序
  5. #排序算法#【5】合并排序

  排序算法有很多,在实际使用的时候需要根据情况选择合适的相应算法。每种算法都有其优缺点,判断一个算法的优劣,可以参考的标准:

  1. 计算的复杂度:依据排序数据量的大小(n),好的表现是O(nlogn),最差表现为O(n2)
  2. 系统资源的使用:包括计算机内存以及其他资源的使用,主要考虑计算机辅助内存的多少
  3. 稳定度

几种算法的复杂度:

  1. 冒泡排序法:平均速度和最坏情况下的速度都为O(n2)
  2. 快速排序法:平均速度为O(nlogn),比冒泡排序法快,单在最坏的情况下与冒泡排序法相同,为O(n2)
  3. 简单选择排序法,平均速度和最坏情况下的速度都为O(n2)
  4. 堆排序法:平均速度和最坏情况下的速度都为O(nlogn)
  5. 希尔排序法:平均速度为O(n3/2),最坏情况下速度为O(n2)
  6. 合并排序法:平均速度和最坏情况下的速度都为O(nlogn)

几种算法的稳定度:

  • 稳定的算法:
    • 冒泡排序法
    • 插入排序法
    • 合并排序法
  • 不稳定的算法:.
    • 选择排序法
    • 希尔排序法
    • 堆排序法
    • 快速排序法

选择排序算法的几个参考:

  1. 当数据为正序时,使用直接插入排序法、冒泡排序法和快速排序法
  2. 当n值比较小(如n<=50),可采用直接插入排序法或选择排序法。当记录规模比较小时直接插入排序较好;否则因为直接选择移动的记录数多于直接插入,应选择直接选择排序
  3. 当n值比较大时,则应采用时间复杂度为O(nlogn)的排序算法,如快速排序、堆排序或合并排序
  4. 当待排序的关键字是随机分布时,快速排序的平均时间最短
  5. 若要求排序稳定,则可选择合并排序
posted @ 2014-07-21 08:27  非著名程序师  阅读(984)  评论(2编辑  收藏  举报