要解决这道题,需结合排序算法的时间复杂度、稳定性、空间复杂度三个核心指标,对常见O(nlgn)级排序算法的特性进行对比分析:
(62)时间复杂度O(nlgn)且稳定的排序算法:归并排序(Merge Sort)
关键解析:O(nlgn)排序算法的稳定性对比
首先明确核心概念:
- 稳定性:排序后,相同值元素的相对位置保持不变(如原序列中“5(第1个)”在“5(第2个)”前,排序后仍保持此顺序);
- O(nlgn)级排序算法:常见的有归并排序、快速排序、堆排序、希尔排序(希尔排序平均复杂度接近O(nlgn),但最坏为O(n²),不满足严格O(nlgn))。
各算法稳定性与空间复杂度对比如下表:
| 排序算法 | 时间复杂度(最坏/平均) | 稳定性 | 空间复杂度 | 核心特点 |
|---|---|---|---|---|
| 归并排序 | O(nlgn) / O(nlgn) | ✅ 稳定 | O(n) | 分治思想,通过合并有序子序列实现,稳定且复杂度严格O(nlgn) |
| 快速排序 | O(n²) / O(nlgn) | ❌ 不稳定 | O(logn)~O(n) | 分治思想, pivot选择影响性能,最坏O(n²),且不稳定(如交换时打乱相同值顺序) |
| 堆排序 | O(nlgn) / O(nlgn) | ❌ 不稳定 | O(1) | 利用堆的堆顶特性排序,交换堆顶与末尾元素时会打乱相同值顺序,不稳定 |
| 希尔排序 | O(n²) / 接近O(nlgn) | ❌ 不稳定 | O(1) | 插入排序的改进,最坏复杂度不满足严格O(nlgn),且不稳定 |
综上,只有归并排序同时满足“时间复杂度O(nlgn)”和“稳定”两个条件,因此(62)的答案为归并排序。
(63)时间复杂度O(nlgn)且空间复杂度O(1)的排序算法:堆排序(Heap Sort)
关键解析:O(nlgn)排序算法的空间复杂度对比
核心概念:
- 空间复杂度O(1):排序过程中不依赖额外的数组或大量递归栈空间,仅使用常数级临时变量(即“原地排序”)。
结合上述表格的空间复杂度列,进一步分析:
- 归并排序:需额外数组存储合并后的有序序列,空间复杂度O(n),不满足O(1);
- 快速排序:递归实现需O(logn)~O(n)的栈空间(最坏O(n)),非原地排序,不满足O(1);
- 堆排序:基于“堆”数据结构(通常用数组表示原序列,无需额外空间),排序过程仅需1个临时变量存储交换元素,空间复杂度O(1),且时间复杂度严格O(nlgn);
- 希尔排序:虽空间复杂度O(1),但最坏时间复杂度O(n²),不满足严格O(nlgn)。
综上,只有堆排序同时满足“时间复杂度O(nlgn)”和“空间复杂度O(1)”两个条件,因此(63)的答案为堆排序。
最终答案
(62) 归并排序
(63) 堆排序


4152

被折叠的 条评论
为什么被折叠?



