算法笔记--八个常见排序算法总结
2014-08-31 21:59
260 查看
一、 分类描述
1. 插入排序
直接插入排序:算法简单,稳定,适用于数据量小的情况
希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近
2. 交换排序
冒泡排序:算法简单,稳定,在数据基本有序的情况下效率较高
快速排序:算法效率高,不稳定,需要额外的辅助空间
3. 选择排序
直接选择排序:任何情况时间复杂度均为O(n^2),不稳定,其优势在于交换次数少
堆排序:不稳定,对序列的原始顺序不敏感,适用于数据量大的情况
4. 归并排序
分治策略,稳定,适用于待排序列整体无序、部分有序的情况,需要额外的辅助空间
5.
基数排序
稳定;适用范围有限;当数据位数较小时,时间复杂度近似为O(n),效率高于其它的稳定性排序算法
二、总结比较表
1. 插入排序
直接插入排序:算法简单,稳定,适用于数据量小的情况
希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近
2. 交换排序
冒泡排序:算法简单,稳定,在数据基本有序的情况下效率较高
快速排序:算法效率高,不稳定,需要额外的辅助空间
3. 选择排序
直接选择排序:任何情况时间复杂度均为O(n^2),不稳定,其优势在于交换次数少
堆排序:不稳定,对序列的原始顺序不敏感,适用于数据量大的情况
4. 归并排序
分治策略,稳定,适用于待排序列整体无序、部分有序的情况,需要额外的辅助空间
5.
基数排序
稳定;适用范围有限;当数据位数较小时,时间复杂度近似为O(n),效率高于其它的稳定性排序算法
二、总结比较表
类别 | 排序方法 | 时间复杂度 | 空间复杂度 | 稳定性 | 复杂性 | ||
最好 | 最坏 | 平均 | |||||
插入排序 | 直接插入 | O(n) | O(n^2) | O(n^2) | O(1) | O | 简单 |
希尔排序 | O(n^1.3) | O(n^2) | O(n^1.x) | O(1) | X | 较复杂 | |
交换排序 | 冒泡排序 | O(n) | O(n^2) | O(n^2) | O(1) | O | 简单 |
快速排序 | O(nlogn) | O(n^2) | O(nlogn) | O(logn) | X | 较复杂 | |
选择排序 | 直接选择 | O(n^2) | O(n^2) | O(n^2) | O(1) | X | 简单 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | X | 较复杂 | |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | O | 较复杂 | |
基数排序 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | O(n+r) | O | 较复杂 |
相关文章推荐
- 算法笔记--八个常见排序算法总结
- 【开坑】小笔记汇总&常见算法时间复杂度合集&专题总结链接
- 【数据结构与算法】-常见排序算法总结
- [算法笔记]八种常见排序算法
- 常见排序算法(选择排序-曾经的笔记)
- 常见排序算法(归并排序-曾经的笔记)
- 常见密码算法总结--(4)加密模式的openssl代码分析之cfb模式
- 数据结构与算法——常见排序算法的稳定性分析和结论
- 总结了一些常见的排序算法,面试必备啊!
- 算法笔记(排序算法)
- 常见排序算法(交换排序-曾经的笔记)
- 总结了一些常见的排序算法,面试必备啊!<转载>
- STL学习笔记----14.STL算法之 (排序算法)
- 几种常见模式识别算法整理和总结
- oracle笔记1--常用设置,连接PL/SQL Developer,常见错误总结
- 八种常见排序算法总结
- 常见密码算法总结--(3)加密模式的openssl代码分析之cbc模式
- 常见排序算法总结
- 比较常见的排序算法总结
- 几种常见模式识别算法整理和总结