給定長度Ñ的陣列,其中每個項目具有從它的最終位置的排序後的數組中至多的log(n)的距離,如何有效地完成我排序,並我如何找到價值物品(select-k)的第k個?排序與選擇一個幾乎排序後的數組
這是我開始的想法:
對於排序,使用比較模式,我可以得到有將約爲O((LOGN)^ n)的可能的排列,因此的最大深度比較樹應該是O(nloglogn)。另外,對於選擇的問題,我有一種直覺,如果我看LOGN的範圍爲k個項的每一側(2logn - 1),我可以在使用確定性選擇算法O(logn),但我不確定如何證明此方法的正確性。
請注意,我是而不是正在尋找代碼(使用任何語言),但抽象算法的草圖和時間複雜度。
謝謝。
如果你不看對於代碼,最好轉到https://cs.stackexchange.com/。 – hgazibara