给定一个包含 0、1 和 2 的大小为 N 的数组 A;您需要按升序对数组进行排序。
输入: 第一行包含一个整数“T”,表示测试用例的总数。然后是 T 测试用例。每个测试用例包含两行输入。第一行表示数组 N 的大小。第二行包含由空格分隔的数组 A 的元素。
下面是java代码为什么最高元素不在数组的后端?
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;
}
}
}
}
对于输入:
2
5
0 2 1 2 0
3
0 1 0
你的输出是:
0 0 2 2 1
0 0 1