从时间复杂度分析最慢---->最快
- O(n2),冒泡稳定、直接插入稳定、直接选择不稳定,虽然速度慢,但胜在简单
- O(nlgn)–O(n2),希尔排序(插入排序的改进版),不稳定
- 很快的O(nlgn),快排不稳定,堆排序不稳定(适合大数据),归并排序稳定,
- 可达到On的是计数排序,基数排序,桶排序
从空间复杂度分析
- 大部分空间复杂度都是O(1)
- 只有归并的空间复杂度是O(n)
- 快排是O(logn)–O(n),递归造成的栈空间的使用(用来保存L和R等局部变量),取决于递归树的深度,一般O(logn),最差O(n)
从稳定性分析
稳定性定义:排序前后两个相等的数相对位置不变,则算法稳定。(是否稳定是由具体算法决定的,稳定的在某种条件下也可以变成不稳定,参见冒泡)
稳定性的好处:从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。例如:先按姓排序,再按名排序,名排序之后可以保证姓的顺序没乱。(如基数排序)
- 稳定排序:冒泡排序、直接插入排序、基数排序、、折半插入排序、归并排序
- 不稳定排序:堆排序、快速排序、希尔排序、直接选择排序(可以看到有名的堆排快排都是不稳定的)