2015-08-08 66 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步:从左侧和右侧交替使用元素,您将获得我们想要的!

相关问题