题解 | #颜色分类#

颜色分类

http://www.nowcoder.com/practice/52e04ddb7b5640a8869c2d3da2ad3344

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param colors int整型一维数组 
     * @return int整型一维数组
     */
    public int[] sortColor(int[] colors) {
        // write code here
        if (1 == colors.length) {
            return colors;
        }
        quickSort(colors, 0, colors.length - 1);
        return colors;
    }

    // 快排
    public void quickSort(int[] colors, int start, int end) {
        if (start >= end) {
            return;
        }
        int l = start - 1;
        int r = end + 1;
        int p = start;
        int val = colors[end];
        while (p < r) {
            if (colors[p] < val) {
                int swap = colors[p];
                colors[p] = colors[l + 1];
                colors[l + 1] = swap;
                l++;
                p++;
            } else if (colors[p] > val) {
                int swap = colors[p];
                colors[p] = colors[r - 1];
                colors[r - 1] = swap;
                r--;
            } else {
                p++;
            }
        }
        quickSort(colors, start, l);
        quickSort(colors, r, end);
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务