【发布时间】:2010-12-06 04:09:26
【问题描述】:
我可以使用中位数选择算法在 O(n) 中找到中位数。另外,我知道算法完成后,中位数左侧的所有元素都小于中位数,右侧的所有元素都大于中位数。但是如何在 O(n) 时间内找到离中位数最近的 k 个邻居?
如果中位数为n,则左边的数字小于n,右边的数字大于n。 但是,数组不是在左侧或右侧排序的。这些数字是用户给出的任何一组不同的数字。
问题来自Cormen的Introduction to Algorithms,问题9.3-7
【问题讨论】:
-
如果中位数在位置 n,您是在寻找位置 n+1 和位置 n-1 的值吗?
-
数字是大数还是定点整数?
标签: algorithm sorting search median nearest-neighbor