时间复杂度O(N*logN)
- 解题思路
数组按照从小到大排序后,从中间切分,比如 123456 切分后123,456 穿插进行后142536符合题意
但是1223这种就不行了,但是穿插规则可以变一下,两部分逆序穿插,即2 3 1 2
public void wiggleSort(int[] nums) {int[] help = nums.clone();Arrays.sort(help);int N = nums.length;for (int i = 1; i < nums.length ; i+=2) {nums[i] = help[--N];}for (int i = 0; i < nums.length; i+=2) {nums[i] = help[--N];}}
时间复杂度O(N) 空间复杂度O(1)
- 怎么额外空间复杂度O(1), 时间复杂度O(N)找到数组的中位数?
- 然后小于中位数的放左边,等于中位数的放中间,大于中位数的放右边
- 若数组是偶数长度

- 用完美洗牌问题搞

- 若数组长度是奇数, 0位置的数不动,剩下的数去完美洗牌

