用Java写的合并排序中数组出现的的问题
public class merge {
int r;
public static int[] Merge(int[] A,int p,int q,int r){ //给A重新排序
int n1=q-p+1;
int n2=r-q;
int[] L=new int[n1+1];
int[] R=new int[n2+1];
for(int i=0;i<n1;i++){
L[i]=A[p+i-1];
}
for(int j=0;j<n2;j++){
R[j]=A[q+j];
}
L[n1]=255;
L[n2]=255;
int i=0,j=0;
for(int k=p-1;k<r;k++){
if(L[i]<=R[j]){
A[k]=L[i];
i=i+1;
}
else{
A[k]=R[j];
j=j+1;
}
}
return A;
}
public static void Merge_Sort(int[] A,int p,int r){
int q;
if(p<r){
q=(p+r)/2;
System.out.println("q"+q);
System.out.println("p"+p);
System.out.println("r"+r);
Merge_Sort(A,p,q);
Merge_Sort(A,q+1,r);
System.out.println("Merge"+p+q+r);
Merge(A,p,q,r);
}
}
public static void main(String[] args){
int[] A={9,3,5,2,7,8,4,0,1,10};
int p=1,r=10;
Merge_Sort(A,p,r);//A,1,10
for(int i=0;i<r;i++){
System.out.println(A[i]);
}
}
}
q3
p1
r5
q2
p1
r3
q1
p1
r2
Merge112
Merge123
q4
p4
r5
Merge445
Merge135
2
3
5
7
0