算法——排序总结(完整)
排序算法 | 时间复杂度 | 空间复杂度 | 是否稳定排序 | python代码 | java代码 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(1) | 稳定 | 冒泡排序python | 冒泡排序java |
鸡尾酒排序 | O(n^2) | O(1) | 稳定 | 鸡尾酒排序python | 鸡尾酒排序java |
选择排序 | O(n^2) | O(1) | 不稳定 | 选择排序python | 选择排序java |
插入排序 | O(n^2) | O(1) | 稳定 | 插入排序python | 插入排序java |
希尔排序 | Sedgewick增量:O(n^4/3) | O(1) | 不稳定 | 希尔排序python | 希尔排序java |
快速排序 | 平均:O(nlog2n) 最坏:O(n^2) | O(nlog2n) | 不稳定 | 快速排序python | 快速排序java |
堆排序 | O(nlog2n) | O(1) | 不稳定 | 堆排序python | 堆排序java |
归并排序 | O(nlog2n) | O(n) | 稳定 | 归并排序python | 归并排序java |
计数排序 | O(n+m) | O(n) | 稳定 | 计数排序python | 计数排序java |
桶排序 | O(n) | O(n) | 稳定 | 桶排序python | 桶排序java |
基数排序 | O(k(n+m)) | O(n+m) | 稳定 | 基数排序python | 基数排序java |