经典排序算法比较
2018-03-12 17:06
99 查看
排序基本概念
排序:将一组杂乱无章的数据按一定的规律顺次排列起来。数据表( data list)::它是待排序数据对象的有限集合。
排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。
排序算法分析
1. 排序算法的稳定性
如果在元素序列中有两个元素R[i]和R[j],它们的排序码K[i] == k[j],且在排序之前,元素R[i]在R[j]的前面。如果在排序之后,元素R[i]仍在R[j]之前,则称这个排序算法是稳定的,否则称这个排序算法是不稳定的。2. 排序算法评价依据
时间复杂度
排序的时间复杂度可用算法执行中的数据比较次数与数据移动次数来衡量。算法运行时间代价的大略估算一般都按平均情况进行估算。对于那些受对象排序码序列初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算
空间复杂度
算法所需要附加的存储经典排序算法
插入排序:直接插入排序、希尔排序http://blog.csdn.net/zhangye3017/article/details/79516062
选择排序:直接选择排序、堆排序
http://blog.csdn.net/zhangye3017/article/details/79516062
交换排序:冒泡排序、快速排序
http://blog.csdn.net/zhangye3017/article/details/79518238
其他排序:归并排序、计数排序
http://blog.csdn.net/zhangye3017/article/details/79532132
排序算法比较
类别 | 直接插入排序 | 希尔排序 | 选择排序 | 堆排序 | 冒泡排序 | 快速排序 | 归并排序 |
---|---|---|---|---|---|---|---|
时间复杂度 | O(n2n2) | O(n2n2) | O(n2n2) | O(nlgn) | O(n2n2) | O(nlgn) | O(nlgn) |
空间复杂度 | O(1) | O(1) | O(1) | O(1) | O(1) | O(lgn) | O(n) |
稳定性 | 稳定 | 不稳定 | 不稳定 | 不稳定 | 稳定 | 不稳定 | 稳定 |
优缺点 | 越接近有序效率越高 | 优化直接插入排序 | 效率最低 | 效率较高,建堆消耗大 | 效率低 | 效率快 | 最稳定算法 |
相关文章推荐
- 经典排序算法的性能比较
- 经典排序算法的性能比较
- 经典排序算法的实现和比较(简略版)
- 泰泽(Tizen)与安卓(Android)之比较
- 比较酷的安卓软件
- GitHub 上比较有意思的项目
- 两个整数比较大小(指针函数的调用)
- 比较简单的异步加载JS文件的代码
- 比较简单的jquery教程 Easy Ajax with jQuery 中文版全集第1/3页
- 将传统方式与导入MES做一比较。
- 目前比较全的CSS重设(reset)方法总结
- C++ 中string类型和 C风格 char类型字符串比较
- 比较分析Vector、ArrayList和hashtable hashmap数据结构
- 关于收到部分还款SAP系统两种处理方法的说明和比较
- Java NIO与IO的区别和比较
- 经典排序算法总结与实现
- PHP与JSP比较
- Android比较字符串是否为空(isEmpty)
- 比较C++, C#和Java
- mysql timestamp和long存储时间效率比较