给定长度Ñ的阵列,其中每个项目具有从它的最终位置的排序后的数组中至多的log(n)的距离,如何有效地完成我排序,并我如何找到价值物品(select-k)的第k个?排序与选择一个几乎排序后的数组
这是我开始的想法:
对于排序,使用比较模式,我可以得到有将约为O((LOGN)^ n)的可能的排列,因此的最大深度比较树应该是O(nloglogn)。另外,对于选择的问题,我有一种直觉,如果我看LOGN的范围为k个项的每一侧(2logn - 1),我可以在使用确定性选择算法O(logn),但我不确定如何证明此方法的正确性。
请注意,我是而不是正在寻找代码(使用任何语言),但抽象算法的草图和时间复杂度。
谢谢。
如果你不看对于代码,最好转到https://cs.stackexchange.com/。 – hgazibara