码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构复习之排序算法的总结回顾

时间:2015-07-18 16:47:34      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

根据排序过程中借助的主要操作,我们将内排序分为四类:

  •   插入排序类
    •   直接插入排序
    •   希尔排序    
  •   选择排序类
    •   简单选择排序
    •   堆排序
  •   交换排序类
    •   冒泡排序
    •   快速排序
  •   归并排序类
    •   归并排序

       

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

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

 

对7中算法的各种指标进行对比:

  平均情况看:显然最后三种算法要胜过希尔算法,并远远超过前3种简单算法。

  最好情况看:反而冒泡和直接插入排序要更胜一筹,也就是说,如果待排序序列总是基本有序,反而并应该考虑4种改进算法。

  最坏情况看:堆排序与归并排序要强过与快速排序以及其他简单排序。

  空间复杂度:归并排序的空间要求为O(n),快速排序为O(logn)~O(n),而其他几种排序空间要求均为O(1),

        如果执行算法的软件所处的环境非常在乎内存的使用量时,选择归并排序和快速排序就不是一个较好的策略。

  稳定性:归并排序独占鳌头,对于非常在乎排序稳定性的应用中,归并排序是个好算法。

  待排序记录的个数:待排序的个数n越小,采用简单排序方法越合适。反之n越大,采用改进方法越合适。

           这就是优化改进算法时增加一个阀值的原因,低于阀值时采用简单排序方法。

  综合各项指标来说:经过优化的快速排序是性能最好的排序算法。

注:不同场合我们应该考虑使用不同的算法来应对它,以达到最优。具体问题具体对待。

 

数据结构复习之排序算法的总结回顾

标签:

原文地址:http://www.cnblogs.com/changyaohua/p/4657051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!