在一个包含 n 个元素的无序数组中,如何高效地找到第 k 小的元素?请说明思路并分析时间复杂度。
考察说明
考察顺序统计量算法、分治思想与复杂度分析
回答思路
- 能指出排序后取第 k 个的朴素方法及其 O(n log n) 复杂度
- 能提出基于快速排序分区的快速选择算法,并说明平均 O(n)、最坏 O(n^2) 的复杂度
- 能提出使用堆维护 k 个最小元素,复杂度为 O(n log k)
- 能回答最坏情况 O(n) 的 BFPRT(中位数中位数)算法,并理解其分区策略
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。