T11 排序算法的数据结构
| 排序算法 | 支持数据结构 | 解释/理由 |
|---|
| 冒泡排序 | 数组 / 链表 | 数组:随机访问,相邻元素交换高效。链表:可实现,但指针操作略显繁琐。 |
| 选择排序 | 数组 / 链表 | 数组:随机访问,查找最小值及交换高效。链表:查找最小值需 O(N) 遍历,交换复杂。 |
| 插入排序 | 数组 / 链表 | 数组:插入元素需 O(N) 移动。链表:找到插入点后 O(1) 调整指针,避免大量移动,效率更高。 |
| 希尔排序 | 数组 | 算法核心在于对相距一定间隔的元素进行分组插入排序,这需要 O(1) 随机访问能力来快速跳跃到指定间隔的元素。链表无随机访问能力,实现会极其低效。 |
| 归并排序 | 数组 / 链表 | 数组:合并通常需额外空间。链表:分割与合并(仅指针操作)均高效,非常适合。 |
| 快速排序 | 数组 | 核心分区操作高度依赖数组的 O(1) 随机访问特性,双指针高效。链表:无随机访问能力,分区操作 O(N) 低效。 |
| 堆排序 | 数组 | 堆结构天然基于数组实现,父子节点 O(1) 索引计算。链表:无法 O(1) 访问父子节点,实现复杂低效。 |
| 计数排序 | 数组 | 算法核心依赖额外计数数组和输出数组的随机访问特性。 |
| 基数排序 | 数组 / 链表 | 数组:常结合计数排序,随机访问有利。链表:非常适合,每趟排序通过桶(链表)进行指针操作,避免数据移动。 |