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

数据结构学习笔记——排序

时间:2015-03-10 23:03:32      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:

1. 分类

技术分享

2. 7种内排序算法的各种指标

排序方法

平均情况

最好情况

最坏情况

辅助空间

稳定性

移动次数的平均情况

移动次数的最好情况

移动次数的最坏情况

冒泡排序

O(n2)

O(n)

O(n2)

O(1)

稳定

O(n2)

0

O(n2)

简单选择排序

O(n2)

O(n2)

O(n2)

O(1)

稳定

O(n)

0

O(n)

直接插入排序

O(n2)

O(n)

O(n2)

O(1)

稳定

O(n2)

O(n)

O(n2)

希尔排序

O(nlogn)~O(n2)

O(n1.3)

O(n2)

O(1)

不稳定

 

 

 

堆排序

O(nlogn)

O(nlogn)

O(nlogn)

O(1)

不稳定

 

 

 

归并排序

O(nlogn)

O(nlogn)

O(nlogn)

O(n)

稳定

 

 

 

快速排序

O(nlogn)

O(nlogn)

O(n2)

O(logn)~O(n)

不稳定

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 分析(“>”表示优于)

从平均情况看:

堆排序、归并排序、快速排序 > 希尔排序 > 简单算法

从最好情况看:

冒泡排序、直接插入排序 > 其它算法

从最坏情况看:

堆排序、归并排序 > 其它算法

从空间复杂度看:

简单算法、希尔排序、堆排序 > 快速排序 > 归并排序

从稳定性看:

简单算法、归并排序 > 希尔排序、堆排序、快速排序

从移动次数的平均情况看:

简单选择排序 > 冒泡排序、直接插入排序

从移动次数的最好情况看:

简单选择排序、冒泡排序 > 直接插入排序

从移动次数的最坏情况看:

简单选择排序 > 冒泡排序、直接插入排序

4. 结论

  • 堆排序和归并排序发挥稳定,快速排序最坏情况时发挥较差;
  • 如果待排序序列总是基本有序,应选择简单算法
  • 如果对内存使用量有要求(即对空间大小有要求),应选择归并排序和快速排序
  • 如果对排序稳定性有要求,应选择简单算法或归并排序
  • 如果待排序记录的个数n越小,应采用简单算法,反之,n越大,应选择改进算法;
  • 如果数据量不大但记录的关键字信息量较大,应选择简单选择排序(在简单算法中),因为当记录的关键字本身信息量较大时,其占用存储空间较大,在移动记录时所花费的时间就越多,另外,记录的关键字信息量大小对改进算法影响不大
  • 综合各项指标来说,经过优化的快速排序性能最好的排序算法。

数据结构学习笔记——排序

标签:

原文地址:http://www.cnblogs.com/dgjamin/p/4328589.html

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