【发布时间】:2021-09-09 19:36:54
【问题描述】:
给定一个大小为 n 的数组,给出一个使用 O(1) 空间(不是中位数的中位数)的确定性算法(不是快速排序),它将找到第 K 个最小的项目。
有一些显而易见的解决方案,例如在 nlogn 上对数组进行排序或在 nk 中找到最小 k 时间,但我确信有更好的方法来做到这一点。它不一定是班轮(我怀疑它是否可以)。
感谢帮助。
【问题讨论】:
-
我说过它不能是中位数或快速排序,因为两者都不是确定性的或使用额外的空间。
-
合并排序和堆排序是确定性的,在
O(n log n)中运行。 -
但不在 O(1) 空间中 - @blazs