好的,我来给你整理一个 十大经典排序算法概览,并附上动图演示说明它们的核心思想和特点,方便理解。
十大经典排序算法(附动图演示)
下表展示排序算法名称、时间复杂度、空间复杂度以及核心思路,同时给出对应的动画示意(示意图可用 GIF 或网页动画)。
序号 | 排序算法 | 时间复杂度 | 空间复杂度 | 核心思路 | 动图演示 |
---|---|---|---|---|---|
1 | 冒泡排序(Bubble Sort) | O(n²) | O(1) | 相邻元素两两比较,大的元素逐渐“浮”到右侧 | ![]() |
2 | 选择排序(Selection Sort) | O(n²) | O(1) | 每次从未排序部分选择最小元素放到已排序末尾 | ![]() |
3 | 插入排序(Insertion Sort) | O(n²) | O(1) | 将元素插入已排序序列中,保持有序 | ![]() |
4 | 希尔排序(Shell Sort) | O(n log n) ~ O(n²) | O(1) | 插入排序升级版,先分组再插入排序,减少移动次数 | ![]() |
5 | 归并排序(Merge Sort) | O(n log n) | O(n) | 分治法,将数组递归拆分,再合并排序 | ![]() |
6 | 快速排序(Quick Sort) | O(n log n) 平均 | O(log n) 递归栈 | 选择基准元素,将数组分成小于和大于基准两部分,递归排序 | ![]() |
7 | 堆排序(Heap Sort) | O(n log n) | O(1) | 利用二叉堆结构,每次取最大/最小元素放到末尾 | ![]() |
8 | 计数排序(Counting Sort) | O(n+k) | O(k) | 统计每个元素出现次数,再按次数排列 | ![]() |
9 | 桶排序(Bucket Sort) | O(n+k) | O(n+k) | 将数据分到不同桶,再对每个桶排序,最后合并 | ![]() |
10 | 基数排序(Radix Sort) | O(nk) | O(n+k) | 按位(个位、十位…)对元素排序,稳定排序 | ![]() |
1️⃣ 动图说明
- 冒泡、插入、选择排序 → 基本排序思想,适合学习和小数据量。
- 归并、快速、堆排序 → 高效通用排序,适合大数据。
- 计数、桶、基数排序 → 非比较排序,对整数/特定场景性能非常高。
2️⃣ 小结
- 稳定排序:冒泡、插入、归并、计数、基数 → 保留相等元素相对位置
- 不稳定排序:选择、快速、堆排序
- 时间复杂度:
- 最优:O(n log n) → 快速、归并、堆
- 平均:O(n log n)
- 最差:O(n²) → 冒泡、插入、选择
- 空间复杂度:
- 原地排序:冒泡、选择、插入、快速、堆
- 需要额外空间:归并、计数、桶、基数
发表回复