排序算法的性能分析
以下是 十种常见排序算法 的性能分析表,涵盖了它们的 时间复杂度 和 空间复杂度。这些排序算法的选择依据不同的应用场景,比如数据规模、数据分布、是否要求稳定排序等。
| 排序算法 | 最优时间复杂度 | 平均时间复杂度 | 最差时间复杂度 | 空间复杂度 | 稳定性 | 备注 | 
|---|---|---|---|---|---|---|
| 冒泡排序 (Bubble Sort)  | 
$O(n)$ | $O(n²)$ | $O(n²)$ | $O(1)$ | 稳定 | 简单,但效率低。 | 
| 选择排序 (Selection Sort)  | 
$O(n²)$ | $O(n²)$ | $O(n²)$ | $O(1)$ | 不稳定 | 每次选择最小元素交换。 | 
| 插入排序 (Insertion Sort)  | 
$O(n)$ | $O(n²)$ | $O(n²)$ | $O(1)$ | 稳定 | 小规模数据时非常高效。 | 
| 归并排序 (Merge Sort)  | 
$O(n log n)$ | $O(n log n)$ | $O(n log n)$ | $O(n)$ | 稳定 | 需要额外空间。 | 
| 快速排序 (Quick Sort)  | 
$O(n log n)$ | $O(n log n)$ | $O(n²)$ | $O(log n)$ | 不稳定 | 平均性能最优。 | 
| 堆排序 (Heap Sort)  | 
$O(n log n)$ | $O(n log n)$ | $O(n log n)$ | $O(1)$ | 不稳定 | 堆排序保证 O(n log n) 时间。 | 
| 计数排序 (Counting Sort)  | 
$O(n + k)$ | $O(n + k)$ | $O(n + k)$ | $O(k)$ | 稳定 | 适用于有较小范围的整数数据。 | 
| 桶排序 (Bucket Sort)  | 
$O(n + k)$ | $O(n + k)$ | $O(n²)$ | $O(n)$ | 稳定 | 适合均匀分布的数据。 | 
| 基数排序 (Radix Sort)  | 
$O(d(n+r))$ | $O(n*k)$ | $O(n*k)$ | $O(n + k)$ | 稳定 | 适用于较小范围的数据。 | 
| 希尔排序 (Shell Sort)  | 
$O(n log n)$ | $O(n^(3/2))$ | $O(n²)$ | $O(1)$ | 不稳定 | 基于插入排序的改进。 | 
排序算法的性能分析
      https://clint456.github.io/2024/12/01/数据结构-year-12-01-排序算法的性能分析/