排序的稳定性
2016-04-01 09:41
162 查看
一,稳定的排序 时间复杂度 空间复杂度
气泡排序 最差, 平均是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(logN)。
当我们需要找到常数级的最大/最小值时,往往堆排序是我们应该最先考虑的
若要求排序稳定,则可选用归并排序。先利用直接插入排序求得较长的有序子文件,然后再两两归并。
在最坏情况下,时间复杂度为O(nlog2 n)的为归并排序和堆排序
气泡排序 最差, 平均是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(logN)。
当我们需要找到常数级的最大/最小值时,往往堆排序是我们应该最先考虑的
若要求排序稳定,则可选用归并排序。先利用直接插入排序求得较长的有序子文件,然后再两两归并。
在最坏情况下,时间复杂度为O(nlog2 n)的为归并排序和堆排序
相关文章推荐
- MacBook Pro换固态硬盘出现的一个稀缺问题
- Jetty使用攻略
- Nginx学习(四):简单的负载均衡配置
- Nginx学习(二):nginx.conf学习
- 20145206邹京儒《Java程序设计》第5周学习总结
- Web网站状态码说明
- Git笔记
- Linux下添加新硬盘,分区及挂载
- 10个队中非空队列按队列号从小到大的顺序串接成一条链
- linux下rpm安装和卸载jdk
- Spring MVC 框架搭建及详解
- cdn 验证码失效
- CodeForces 629B Far Relative’s Problem(暴力)
- android 基础 flag实现清空栈元素简单方法
- virtualbox安装xp后无网络
- 使用MyBatis Generator自动创建代码
- profibus总线和profibus dp的区别
- ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
- 软件工程构建之法第四章读后感
- Check Linux distribution