排序比较
2016-02-27 13:22
211 查看
插入排序:
直接插入排序:依次将待排序的序列插入到已排序的序列。时间复杂度:goodO(n) bad(n*2)
空间复杂度O(0)
稳定性:稳定
希尔排序:将待排序列分成若干组,每组进行插入排序。
时间复杂度:O(nlogN)
空间复杂度O(0)
稳定性:不稳定
交换排序:
快排:前后两个指针比K值大的放到后面,比K值小的放到前面。递归实现。
时间复杂度:goodO(nlogN) bad(n*2) ,
空间复杂度O(0)
稳定性:不稳定
冒泡:每次选出一个最大的放到末尾。
时间复杂度:good O(n) bad(n*2)
空间复杂度O(0)
稳定性:稳定
选择排序:
简单选择排序:每次选择一个最小的与无序区的第一个进行交换。
时间复杂度:good O(n) bad(n*2)
空间复杂度O(0)
稳定性:不稳定
堆排序:因为是完全二叉树顺序存储,初始堆从n/2即第一个非叶子结点处开始开始建堆。交换后看是否稳定,如果不稳定再次向下交换。
首先将待排序区构造一个堆,将堆顶数据移除,并将剩下的在调整成堆。和快排相比,对初始状态并不敏感,只需要一个额外存储空间,来暂缓数据。
时间复杂度:O(nlogN)
空间复杂度O(1)
稳定性:不稳定
归并排序:
归并排序:将若干个有序序列进行两两归并,合并成一个有序队列。
时间复杂度:O(nlogN) 空间复杂度O(N)
稳定性:稳定
分配排序:
桶排序:时间复杂度:O(n+m) 空间复杂度O(m)
稳定性:不稳定
基数排序:
相关文章推荐
- UVA 10801(p381)----Lift Hopping
- UVA 10820(p322)----Send a Table
- js面向对象编程:if中能够使用那些作为推断条件呢?
- 关于C++编译时内链接和外链接
- 文献笔记:《Fitting a 3D Morphable Model to Edges: A Comparison Between Hard and Soft Correspondences》读后感~
- LeetCode 12. Integer to Roman & 13. Roman to Integer
- UVA 10791(p317)----Minimum Sum LCM
- 安装andriod studio时出现Internal error. Please report to https://code.google.com/p/an
- 穷举法破解 zebrone1.1
- 用于PHP的Gearman Worker管理工具GearmanManager
- 抽象形式的观察者模式以及观察者模式的使用介绍
- IOS缓存机制详解
- TreeMap详细用法及案例分析
- android popwindow和dialog的取舍
- 数据的存储结构与逻辑结构
- 一种C#生成符合Java规则的二进制文件方法
- object对象、伴生类与伴生对象与类的继承实战
- TreeMap的最基本用法
- cordova技术集(一)Hello,cordova! 如何创建cordova项目。
- Scanner扫面器是否要关闭