算法 | 是否稳定 | 是否为原地排序 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
冒泡排序 | 是 | 是 | N*N | 1 |
选择排序 | 否 | 是 | N*N | 1 |
插入排序 | 是 | 是 | N*N | 1 |
归并排序 | 是 | 否 | N*logN | N |
快速排序 | 否 | 是 | N*logN | logN |
堆排序 | 否 | 是 | N*logN | 1 |
希尔排序 | 否 | 是 | N*logN | 1 |
基数排序 | 是 | 否 | N | M:桶的数量 |
计数排序 | 是 | 否 | N | M:桶的数量 |
冒泡排序
选择排序
运行时间与输入无关
数据移动最少
插入排序
对于部分有序数组十分高效,适合小规模数组
归并排序
merge时,判断是否有序,若有序则无需merge操作
快速排序
case:
数组中出现超过一半的数字;
最小的k个数;