各种排序应用场合
来源:互联网 发布:mysql主键与索引 编辑:程序博客网 时间:2024/06/05 10:52
时间复杂度
O(n*n)
- 插入排序、选择排序和冒泡排序
O(nlogn)
- 快速排序、堆排序和归并排序
影响排序效果的因素
- 待排序的数据规模
- 关键字的结构及其初始状态
- 稳定性的要求
- 语言工具的条件
- 存储结构
- 时间和辅助空间复杂度
应用场景:
- 若n较小(数据规模较小),插入排序或选择排序较好
- 若数据初始状态基本有序(正序),插入、冒泡或快速排序为宜
- 若n较大,则采用时间复杂度为O(nlogn)的排序方法:快速排序或堆排序
- 快速排序是目前基于比较的排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
- 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
快速排序最坏情况:时间复杂度是O(n*n)
快速排序的时间性能取决于快速排序的递归深度,可以用递归树来描述递归算法的执行情况
- 在关键字已经基本有序的情况下(正序或者逆序),每次划分都只得到一个比上一次划分少一个记录的子序列,此时需要执行n-1次递归调用,且第i次划分需要经过n-i次关键字的比较才能找到第i个记录,比较次数达到(n(n-1))/2,最终其时间复杂度为O(n*n)
阅读全文
0 0
- 各种排序应用场合
- FindControl在各种场合的应用
- 各种分布及应用场合(建模对象)
- 各种分布及应用场合(建模对象)
- RCP的应用场合
- xml的应用场合
- traits的应用场合
- Annotation的应用场合
- java反射应用场合
- undefined、null应用场合
- ServletContext的应用场合
- 各种Action的使用场合
- 各种场合的日期转换
- 设计模式的应用场合
- 扩展CalendarExtender的应用场合
- zookeeper使用和应用场合
- C++ RAII 思想应用场合
- spark概念以应用场合
- html table 个人简历demo
- top、padding-top、margin-top的区别(以及个人总结)---前端进阶(随笔)
- [vim] .viminfo和.vimrc
- IOS 中cocopos的问题
- 14.字符串排序
- 各种排序应用场合
- ASP.NET发送手机短信验证码
- 你所熟知的javascript?从基础原理开始认识JS语言
- Java Web学习总结(35)——HTTP状态码汇总
- 户外广告的速度与激情
- 互联网的接入方式
- JS获取文件名的方法
- POJ 1902 Illumination 笔记
- Android中使用Handler造成内存泄露的分析和解决