算法 - 内部排序方法总结
来源:互联网 发布:淘宝店怎么升级成天猫 编辑:程序博客网 时间:2024/06/11 09:40
各种排序方法的性能比较排序方法最好时间复杂度平均时间复杂度最坏时间复杂度空间复杂度稳定性直接插入排序O(n)O(n2)O(n2)O(1)稳定简单选择排序O(n2)O(n2)O(n2)O(1)不稳定冒泡排序O(n)O(n2)O(n2)O(1)稳定希尔排序-O(n1.25)-O(1)不稳定快速排序O(nlog2n)O(nlog2n)O(n2)O(log2n)~O(n)不稳定堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)不稳定归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定
不同的排序方法各有优缺点,可根据需要运用到不同的场合。选取排序方法时需要考虑的主要因素有:待排序的记录个数n;记录本身的大小;关键字的分布情况;对排序稳定性的要求;语言工具的条件;辅助空间的大小等。
依据这些因素,可以得到以下同点结论:
(1)若待排序的记录数n较小时,可采用插入排序和简单选择排序。由于直接插入排序所需的记录移动操作较选择排序多,因此当记录本身信息量较大时,用直接选择排序方法较好。
(2)若待排序记录按关键字基本有序,则宜采用直接插入排序或冒泡排序。
(3)当n很大且关键字的位较少时,采用链式基数排序较好。
(4)若n较大,则应采用时间复杂度为O(nlog<sub>2</sub>n)的排序方法,例如快速排序、堆排序或归并排序。
快速排序是目前内部排序方法中被认为是最好的方法,当待排序的关键字随机分布时,快速排序的平均时间最短;堆排序只需一个辅助存储空间,并且不会出现在快速排序中可能出现的最坏情况。这两种方法都是不稳定的排序方法,若要求排序稳定,可选择归并排序。通常可将归并排序和直接插入排序结合起来使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并。
内部排序算法一般都是在一维数组上实现的。当记录本身信息量较大时,为避免耗费大量的时间移动记录,可以采用链表作为存储结构。
1 1
- 算法 - 内部排序方法总结
- 内部排序算法总结
- 内部排序算法 总结
- 内部排序算法总结
- 内部排序算法总结
- 内部排序算法总结
- 内部排序常用算法总结
- 八大内部排序算法总结
- leetcode总结-- 排序算法(内部排序)
- 八种常用内部排序算法总结
- 内部排序算法总结(use python)
- 内部排序总结(附各种排序算法源码)
- 常见排序算法:各种内部排序方法比较
- 若干常用(内部)排序算法的总结
- 【数据结构算法】——内部排序整理总结
- 【整理】经典内部排序算法总结和C/C++实现
- 几个内部排序算法的总结(JAVA版)
- 八大内部排序算法总结(未完结)
- Singleton模式
- 第十四周项目2 带姓名的成绩单(1)(2)
- 用热备+归档恢复损坏的非系统表空间
- java集合中Comparable和Comparator辨析
- 定制WinEdt 优化Latex输入
- 算法 - 内部排序方法总结
- 数据结构 第四章 字符串与多维数组
- 用Python开始机器学习(9:推荐算法之推荐矩阵)
- 第14周项目2-带姓名的成绩单-(1)&(2)
- Django1.6学习--为博客添加comments(评论)功能
- Spring基础
- 第十四周项目2带姓名成绩单(3)
- 数据结构 第五章 树和二叉树
- PL/SQL Developer安装配置实践