Wiggle Sort II
Written on January 4, 2016
Tweet
Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]....(wiggle sort I: nums[0] <= nums[1] >= nums[2] <= nums[3]...)
public class Solution {
public void wiggleSort(int[] nums) {
if (nums == null || nums.length == 0) return;
Arrays.sort(nums);
int n = nums.length, mid = n % 2 == 0 ? n / 2 - 1 : n / 2;
int[] temp = Arrays.copyOf(nums, n);
int index = 0;
for (int i = 0; i <= mid; i++) {
nums[index] = temp[mid - i];
if (index + 1 < n) {
nums[index + 1] = temp[n - i - 1];
}
index += 2;
}
}
}