324. Wiggle Sort II

    /*
     * 324. Wiggle Sort II
     * 2016-7-7 by Mingyang
     * 我想利用I的思路,设立一个list,sort以后从头尾分别加,但是遇到1122233就不行了
     * 因为这里是严格要求比周围的都大,不能等于
     * 那么下面的思路非常好,就是从中间取,一中一后,依次交叉往前取
     */
    public void wiggleSort2(int[] nums) {
        Arrays.sort(nums);
        int[] temp = new int[nums.length];
        int s = (nums.length + 1) >> 1, t = nums.length;
        for (int i = 0; i < nums.length; i++) {
            temp[i] = (i & 1) == 0 ? nums[--s] : nums[--t]; 
// s是最中间的那个,分别往前取 } for (int i = 0; i < nums.length; i++) nums[i] = temp[i]; }
原文地址:https://www.cnblogs.com/zmyvszk/p/5652860.html