数据结构-荷兰国旗问题

/*
    * 与最右边的数比较,
    * 小于的放在左边
    * 大于的放在右边
    * 等于的放在中间
    */
    public static int[] netherlandsFlag(int[] arr, int L, int R){
        if(L>R){
            return new int[]{-1,-1};
        }

        if(L == R){
            return new int[]{L,R};
        }

        int less = L-1;
        int more = R;
        int index = L;
        while(index<more){
            if(arr[index] == arr[R]){
                index++;
            }else if(arr[index] < arr[R]){
                swap(arr,++less,index++);
            }else if(arr[index] > arr[R]){
                swap(arr,--more,index);
            }
        }

        swap(arr,R,more);
        return new int[]{less+1,more};
    }

 

上一篇:linux下查看文件内容命令


下一篇:linux入门基础知识总结