荷兰国旗问题(排序)

给定一个数组arr和一个数num,把

public static int[] patition(int[] arr,int L,int R,int num) {
        int less = L-1;//小于区域
        int more = R+1;//大于区域
        int cur = L;//当前位置
        while(cur<more) {
            if(arr[cur]<num) {//当前数小
                swap(arr,++less,cur++);
            }else if(arr[cur]>num) {//当前数大
                swap(arr,--more,cur);
            }else {//相等
                cur++;
            }
        }
        return new int[] {less+1,more-1};
    }
    public static void swap(int[] arr,int i,int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

猜你喜欢

转载自blog.csdn.net/qq_42175113/article/details/82191723