如何重新排列的阵列以这样的方式,每个元件比其相邻更大/更小的 [英] How to rearrange an array in such a way that each element is greater/smaller than its neighbours
本文介绍了如何重新排列的阵列以这样的方式,每个元件比其相邻更大/更小的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,如果数字是:
30, 12, 49, 6, 10, 50, 13
该阵列将是:
The array will be:
[10, 6, 30, 12, 49, 13, 50]
正如你所看到的:
As you can see:
- 在6比均为10和30和 小
- 49大于12和13等。
数字都是不同的,真实的。我需要最有效的算法。
The numbers are all different and real. I need the most efficient algorithm.
推荐答案
这可以为O完成(N):
This can be done in O(n):
- 找到中位数为O(n)(说明是在<一个可用href="http://en.wikipedia.org/wiki/Selection_algorithm#Linear_general_selection_algorithm_-_Median_of_Medians_algorithm">Wikipedia
- 把比偏远地点的中位数和每一个更小的元素更大的每一个元素 - 就连地方
当然,这种假设所有的元素都是不同的,否则有时会失败。
Of course, this assumes that all elements are distinct, otherwise sometimes it will fail.
这篇关于如何重新排列的阵列以这样的方式,每个元件比其相邻更大/更小的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文