中间的数字不仅仅是邻居

时间:2015-08-08 16:55:03

标签: algorithm puzzle

给定整数数组,重新排列数组,使元素按交替顺序排列

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

您可以先将O(NLogN)排序并重新排列。是否可以在O(n)时间内完成这项工作?

1 个答案:

答案 0 :(得分:3)

步骤1:在O(n)时间内获取阵列的中值。我们可以通过QuickSelect方法得到(n / 2)个最大元素来做到这一点。

第2步:现在不要读这一步,考虑一下解决方案,非常清楚。将上一步中获得的数字作为您的支点,并执行quickSort的第一步。

步骤3:现在中位数左边的元素小于中位数,右边的元素大于中位数。

步骤4:只需从左右两侧取出元素,你就会得到我们想要的东西!