Wiggle Sort II
Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]…
时间复杂度:O(n*logn)
空间复杂度:O(n)
将排序后的数组分为前后两部分,每次从两部分中拿出当前最大的,按顺序放入temp数组
public void wiggleSort(int[] nums) {
int length = nums.length;
if(length <= 1)
return ;
Arrays.sort(nums);
int mid = (length - 1 - 0) / 2 + 0;
int left = mid;
int right = length - 1;
int[] temp = new int[length];
int i = 0;
while(left >= 0 && right > mid){
temp[i++] = nums[left--];
temp[i++] = nums[right--];
}
if(left >= 0){
temp[i] = nums[left];
}else if(right > mid){
temp[i] = nums[right];
}
for(int j = 0;j < length;j++){
nums[j] = temp[j];
}
}