荷兰国旗单遍

时间:2019-07-20 05:42:45

标签: java dutch-national-flag-problem

给出大小为N的数组A,其中包含0、1和2;您需要按升序对数组进行排序。

输入: 第一行包含一个整数“ T”,表示测试用例的总数。然后是T测试用例。每个测试用例包含两行输入。第一行表示数组N的大小。第二行包含数组A的元素,以空格分隔。

下面是Java代码 为什么最高的元素不会出现在数组的后端?

framework search paths

用于输入:

copy-framework

您的输出是:

class GFG {
    public static void main (String[] args) {
        //code
        Scanner sc = new Scanner(System.in);
        int T =sc.nextInt();
        while(T>0)
        {
            int N= sc.nextInt();
            byte A[]=new byte[N];

            for(int i=0;i<N;i++){
                A[i]=sc.nextByte();
            }

            GFG g= new GFG();
            g.sortarray(A,N);

            for(int i=0;i<N;i++){
                System.out.print(A[i]+" ");
            }
            System.out.println();
            T--;
        }
        sc.close();
    }

    public static void sortarray(byte[] A,int n)
    {
       int low=0;
       int mid=0;
       int high=A.length-1;
       byte temp=0;

       for(int i=0;i<n;i++){
           if(A[i]==0){
               temp=A[low];
               A[low]=A[i];
               A[i]=temp;
               low++;
               mid++;
           }
           if(A[i]==2){ 
                temp=A[high];
                A[high]=A[i];
                A[i]=temp; 
                high--;
           }
           else{
            ++mid;
           }
       }
    }
} 

1 个答案:

答案 0 :(得分:0)

尝试在IDE中逐步调试代码或在白板上跟踪代码。算法有误