package helllo;
public class Merge__Sort {
public static int Merge(int a[],int i,int mid,int j){
int lmin=i;
int lmax=mid;
int rmin=mid+1;
int rmax=j;
int temp[]=new int[20];
int k;
for( k=0;lmin<=lmax &&rmin<=rmax;k++){
if(a[lmin]<a[rmin])
temp[k]=a[lmin++];
else
temp[k]=a[rmin++];
}
if(lmin<=lmax){
for(int s=lmin;s<=lmax;s++)
temp[k]=a[s];
k++;
}
if(rmin<=rmax){
for(int q=rmin;q<=rmax;q++)
temp[k]=a[q];
k++;
}
for(int w=0;w<k;w++)
a[w+i]=temp[w];
return 0;
}
public static int MergeSort(int a[],int i,int j){
if(i<j){
int mid=(i+j)/2;
MergeSort(a,i,mid);
MergeSort(a,mid+1,j);
Merge(a,i,mid,j);
}
return 0;
}
public static void main(String[] args) {
//int []a=new int[20];
int a[]={1,8,2,6,5,4};
System.out.println("归并之前的排序为");
for(int rr=0;rr<=5;rr++)
System.out.printf("%d\t", a[rr]);
System.out.printf("\n");
MergeSort(a,0,5);
System.out.println("归并之后的排序为");
for(int rr=0;rr<=5;rr++)
System.out.printf("%d\t", a[rr]);
System.out.printf("\n");
}
}
错误结果:
归并之前的排序为
1 8 2 6 5 4
归并之后的排序为
1 2 4 6 4 8