排序算法是《数据结构与算法》中最基本的算法之一。
十大经典排序算法对比 | ||||||
---|---|---|---|---|---|---|
排序算法 | 时间复杂度 | 空间复杂度 | 排序方式 | 稳定性 | ||
平均 | 最好 | 最坏 | ||||
冒泡排序 | $O(n^2)$ | $O(n)$ | $O(n^2)$ | $O(1)$ | 内部排序 | :heavy_check_mark: |
选择排序 | $O(n^2)$ | $O(n^2)$ | $O(n^2)$ | $O(1)$ | 内部排序 | :x: |
插入排序 | $O(n^2)$ | $O(n)$ | $O(n^2)$ | $O(1)$ | 内部排序 | :heavy_check_mark: |
希尔排序 | $O(n^{1.3})$ | $O(n)$ | $O(n^2)$ | $O(1)$ | 内部排序 | :x: |
归并排序 | $O(n\log_2n)$ | $O(n\log_2n)$ | $O(n\log_2n)$ | $O(n)$ | 外部排序 | :heavy_check_mark: |
快速排序 | $O(n\log_2n)$ | $O(n\log_2n)$ | $O(n^2)$ | $O(n\log_2n)$ | 内部排序 | :x: |
堆排序 | $O(n\log_2n)$ | $O(n\log_2n)$ | $O(n\log_2n)$ | $O(1)$ | 内部排序 | :x: |
计数排序 | $O(n+k)$ | $O(n+k)$ | $O(n+k)$ | $O(k)$ | 外部排序 | :heavy_check_mark: |
桶排序 | $O(n+k)$ | $O(n+k)$ | $O(n^2)$ | $O(n + k)$ | 外部排序 | :heavy_check_mark: |
基数排序 | $O(n×k)$ | $O(n×k)$ | $O(n×k)$ | $O(n + k)$ | 外部排序 | :heavy_check_mark: |
详细说明及代码实现如下: