码迷,mamicode.com
首页 > 其他好文 > 详细

280. Wiggle Sort

时间:2016-09-24 19:01:45      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

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].

思路:这题有点greedy的意思。奇数位,index偶数的时候,如果比前面的数字大,调换位置。偶数位,index奇数的时候,比之前的数字小,调换位置。

验证一下,这种调换会不会破环规律。  3 5 6 8  1.数字6奇数位调换,因为左边奇数位3是小于偶数位的5。如果调换一个比偶数位更大的数字6,那么大小关系不会破坏。右边偶数位8,原来奇数位6要小于右边偶数位8,换过来一个更小的值6,因此大小关系也不变。

2.偶数位调换。 3 10 9 8 5

 同理,偶数位8要大于奇数位9.调换位置。原先奇数位10要大于9,换来一个更小的树8。大小不表。5要小于左边的偶数位,换来一个更大的9,因此大小也不变。
 
public class Solution {
    public void wiggleSort(int[] nums) {
        for(int i=1;i<nums.length;i++)
        {
            if(i%2==1)
            {
                if(nums[i]<nums[i-1])
                {
                    swap(nums,i);
                }
            }else
            {
                if(nums[i]>nums[i-1])
                {
                    swap(nums,i);
                }
            }
        }
    }
    
    public void swap(int[] nums,int i)
    {
        int tmp=nums[i-1];
        nums[i-1]=nums[i];
        nums[i]=tmp;
    }
    }

 

 

280. Wiggle Sort

标签:

原文地址:http://www.cnblogs.com/Machelsky/p/5903711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!