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

排序算法总结

时间:2016-10-05 22:18:34      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:

各种排序算法总结

 排序算法  插入排序  冒泡排序  选择排序  归并排序  快速排序 堆排序  计数排序  基数排序  桶排序 
思想  构建有序序列 两两交换 每次找一个最小值 分治法思想 分治法思想 最小堆、最大堆 数字本身的属性  对数据选择多种基数  函数的映射关系、Hash 
数据结构  数组  数组  数组  数组 不定   数组 数组 数组  数组 
最差时间复杂度 O(n^2)   O(n^2)   O(n^2)   O(n*lgn)  O(n^2)、改进O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d)  O(n^2)
最优时间复杂度  O(n)   O(n^2)、改进O(n)    O(n^2)   O(n*lgn)  O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d)  O(n)
平均时间复杂度  O(n^2)   O(n^2)   O(n^2)   O(n*lgn)  O(n*lgn)  O(n*lgn)  O(n+k)  O((n+k)*d) O(n) 
最差空间复杂度  总共 O(n) ,需要辅助空间O(1)  总共 O(n) ,需要辅助空间O(1) 总共 O(n) ,需要辅助空间O(1)  О(n) Ω(n)额外空间  总共 O(n) ,需要辅助空间O(1)  O(n+k) 额外空间,k为序列中Max-Min+1   O(n) 额外空间 (K为特征个数)  O(k) 额外空间 
稳定性 稳定 稳定 不稳定 稳定 不稳定 不稳定 稳定 稳定  稳定
 
空间复杂度:
In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。
Out-place sort:归并排序、计数排序、基数排序、桶排序。
 
稳定性:
stable sort:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序。
unstable sort:选择排序、快速排序、堆排序。
 
比较排序:常见的排序算法都是比较排序。非比较排序:计数排序、基数排序和桶排序。
计数排序:待排序的数组元素都是整数,适合数据分布集中的排序。
基数排序:每位的排序是计数排序;桶排序:输入数组的元素都在[0,1)之间。
 
比较排序的时间复杂度通常为O(n2)或者O(n*lgn),比较排序的时间复杂度下界就是O(n*lgn);而非比较排序的时间复杂度可以达到O(n),但是需要额外的空间开销。

排序算法总结

标签:

原文地址:http://www.cnblogs.com/crystalmoore/p/5933034.html

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