Wiggle Sort
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....
For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4].
Solution
public class Solution {
public void wiggleSort(int[] nums) {
int index = 0;
boolean swicth = true;
while (index < nums.length - 1) {
if ((swicth && nums[index] > nums[index + 1]) || (!swicth && nums[index] < nums[index + 1])) {
swap(nums, index, index + 1);
}
swicth = swicth ? false : true;
index++;
}
}
private void swap(int[] nums, int start, int end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
}
}