排序的稳定性
来源:互联网 发布:美女图片源码带采集 编辑:程序博客网 时间:2024/05/21 17:26
一,稳定的排序 时间复杂度 空间复杂度
气泡排序 最差, 平均是O(n*n),最好是O(n) 1
鸡尾酒排序(CockTail, 双向冒泡) 最差, 平均是O(n*n),最好是O(n) 1
插入排序 最差, 平均是O(n*n),最好是O(n) 1
归并排序 最差, 平均,最好是O(nlogn)O(n)
桶排序 O(n)O(k)
基数排序 O(d*n)(d是常数) O(n)
二叉树排序 O(n*logn) O(n)
图书馆排序 O(n*logn)
不稳定的排序:
选择排序 最差,平均都是O(n*n) 1
希尔排序 O(n*logn)1
堆排序 最差、平均、最好都是O(n*logn) 1
快速排序 平均(n*logn),最坏情况下O(n*n) O(logn)
三种简单排序算法,分别为冒泡法,选择排序法和插入法
简单排序中直接插入排序最好,快速排序最快 。
当文件为正序的时候,直接插入排序和冒泡排序最佳。
不同条件下排序方法的选择:
1,若n较小(如n<= 50),可以直接插入或者直接选择排序。
2,若文件初始状态基本有序,则应该选用直接插入排序、冒泡排序或者随机的快速排序为宜。
3,若n较大,则应该采用复杂度为O(n*logn)的排序方法(快速排序,堆排序,或者归并排序)。
快速排序被认为是目前基于比较的内部排序中最好的方法。当待排序的关键字随机分布时,快速排序的时间最短。
堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。
若要求排序稳定,则可选用归并排序。先利用直接插入排序求得较长的有序子文件,然后再两两归并。
在最坏情况下,时间复杂度为O(nlog2 n)的为归并排序和堆排序
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 关于排序的稳定性
- Python 基础 —— re:正则表达
- jdk环境变量含义极其配置
- 【poj 3258】River Hopscotch 中文题意&题解&代码
- 每天laravel-20160624|RateLimiter
- XML解析
- 排序的稳定性
- bzoj 4383: [POI2015]Pustynia 线段树优化建图
- BZOJ_P1934 [Shoi2007]Vote 善意的投票(最小割)
- [spoj244]Transposing is Even More Fun 解题报告
- linux上安装Resin
- C++(union), C#(伪union)实现 Java的Float.intBitsToFloat()方法
- JSON练习
- NOIP 2015 d2t1【poj 3258】 River Hopscotch 二分
- 软件开发几大步骤