Wiggle Sort II
Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3].... Example: Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].
- Time: O(nlogn)
- Space: O(1)
public void wiggleSort(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
int[] temp = Arrays.copyOf(nums, n);
int mid = n % 2 == 0 ? n / 2 - 1 : n / 2;
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 = index + 2;
}
}