摆动排序
题目
给你一个没有排序的数组,请将原数组就地重新排列满足如下性质
nums[0] <= nums[1] >= nums[2] <= nums[3]….注意事项
请就地排序数组,也就是不需要额外数组样例
给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]
题解
从i=1开始遍历数组,如果是奇数位则应该是nums[i]>=nums[i-1],如果是偶数位则应该是nums[i]<=nums[i-1],否则进行交换。
public class Solution {
/**
* @param nums a list of integer
* @return void
*/
public void wiggleSort(int[] nums) {
for (int i = 1; i < nums.length; ++i)
{
if ((i % 2 == 1 && (nums[i] < nums[i-1])) ||
(i % 2 == 0 && (nums[i] > nums[i-1])))
{
int temp = nums[i];
nums[i] = nums[i-1];
nums[i-1] = temp;
}
}
}
}
Last Update 2016.11.