首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

用Java写的合并排序中数组出现的的有关问题

2013-04-20 
用Java写的合并排序中数组出现的的问题public class merge {int rpublic static int[] Merge(int[] A,int

用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]);
   }
   }
}

我推算了几遍结果都是对的,但是最后MyEclipse8.5好像是自动给数组赋值0了,不知道怎么改正,大家帮帮忙~~
结果是
q3
p1
r5
q2
p1
r3
q1
p1
r2
Merge112
Merge123
q4
p4
r5
Merge445
Merge135
2
3
5
7
0

[解决办法]
楼主,你写错了一个地方,代码第16行是不是应该是R[n2]=255啊?
[解决办法]
自动复制这个是jvm在你新建int数组的时候赋值的。myeclipse才不会帮你忙哦

热点排行