给定整数数组,重新排列数组,使元素按交替顺序排列
a1<a2>a3<a4>a5<a6>a7
您可以先将O(NLogN)排序并重新排列。是否可以在O(n)时间内完成这项工作?
答案 0 :(得分:3)
步骤1:在O(n)时间内获取阵列的中值。我们可以通过QuickSelect方法得到(n / 2)个最大元素来做到这一点。
第2步:现在不要读这一步,考虑一下解决方案,非常清楚。将上一步中获得的数字作为您的支点,并执行quickSort的第一步。
步骤3:现在中位数左边的元素小于中位数,右边的元素大于中位数。
步骤4:只需从左右两侧取出元素,你就会得到我们想要的东西!