七个排序算法的小总结
- 选择排序法
- 时间:O(n²)
- 空间:O(1)
- 插入排序法
- 时间:O(n²)
- 空间:O(1)
- 完全有序的数组,时间O(n)
- 冒泡排序法
- 时间:O(n²)
- 空间:O(1)
- 完全有序的数组,时间O(n)
- 归并排序法
- 时间:O(nlogn)
- 空间:O(n)
- 完全有序的数组,时间O(n)
- O(nlogn) 求解数组中逆序对个数
- 快速排序法
- 时间:O(nlogn)
- 空间:O(1)
- 含有相同元素数组,三路快排时间O(n)
- O(n) 求解selectK,topK 问题
- 堆排序法
- 时间:O(nlogn)
- 空间:O(1)
- 堆,优先队列
- 希尔排序法
- 时间:O(nlogn)- O(n²)
- 空间:O(1)
- 分组的思想
二、排序算法的稳定性
排序的稳定性:排序前相等的两个元素,排序后相对不变
- 选择排序法是不稳定的
- 可能被实现成不稳定的排序算法
- 插入排序是稳定的
- 希尔排序是不稳定的
- 冒泡排序是稳定的
三、高级排序算法的稳定性
如果元素只有一个域,稳定性没有意义
本文作者为DBC,转载请注明。