排序算法
术语
1 | 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; |
算法总结

1 | 图片名词解释 |
算法分类

算法详解
1. 冒泡 Bubble Sort
1 | 相邻两两比较、交换 |
1 | 最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2) |
2. 选择排序 Selection Sort
1 | 在未排list中找到最小,放到排序后的list末尾 |
1 | 最佳情况:T(n) = O(n2) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2) |
3. 插入排序 Insertion Sort
1 | 将未排序的list,一个一个插入到已排序的list中 |
1 | 最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2) |
4. 希尔排序 Shell Sort
1 | 插入排序的变种:定义增量,以增量为间隔,进行插入排序,逐渐减小增量 |
1 | 最佳情况:T(n) = O(nlog2 n) 最坏情况:T(n) = O(nlog2 n) 平均情况:T(n) =O(nlog n) |
5. 归并排序 Merge Sort
1 | 将list不断分为两个子序列,直到只有1个或者2个元素(递归) |
1 | 最佳情况:T(n) = O(n) 最差情况:T(n) = O(nlogn) 平均情况:T(n) = O(nlogn) |
1 | def merge_sort(arr): |
6. 快速排序 Quick Sort
1 | 一个基准,左边list小于或等于基准,右边list大于list |
1 | 最佳情况:T(n) = O(nlogn) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(nlogn) |
1 | def qucik_sort(alist): |
1 | 一行快排 |
7. 堆排序 Heap Sort
1 | https://blog.csdn.net/weixin_40596016/article/details/79711682 |
8. 计数排序 Counting Sort
1 | 它只能对整数进行排序 |
1 | 最佳情况:T(n) = O(n+k) 最差情况:T(n) = O(n+k) 平均情况:T(n) = O(n+k) |
9. 桶排序 Bucket Sort
1 | 桶排序是计数排序的升级版 |
1 | 最佳情况:T(n) = O(n+k) 最差情况:T(n) = O(n+k) 平均情况:T(n) = O(n2) |
10. 基数排序 Radix Sort
1 | 最佳情况:T(n) = O(n * k) 最差情况:T(n) = O(n * k) 平均情况:T(n) = O(n * k) |