2015-08-08 25 views
1

更多,重新排列所述陣列,使得所述元件佈置在交替的次序數量大於給定的整數數組鄰居

a1<a2>a3<a4>a5<a6>a7

可以通過第一分揀做到這一點O(NLogN)並重新安排它。是否有可能在O(n)時間內做到這一點?

+0

是的,它可以在O(n)中完成。你想要答案還是隻是一個提示(因爲這是一個面試問題)? – Mshnik

+0

提示會很好 –

+0

最後得到O(N)的解決方案。 –

回答

3

步驟1:在O(n)時間內獲取數組的中位數。我們可以通過使用QuickSelect方法獲得第(n/2)個最大元素來完成此操作。

第2步:現在不要讀這一步,想想解決方案,它的相當清晰。以上一步得到的數字作爲關鍵點並執行quickSort的第一步。

第3步:現在位數左側的元素小於中位數,右側的元素大於中位數。

第4步:從左側和右側交替使用元素,您將獲得我們想要的!

相關問題