/** * 合并排序 * */ public class MergeSort { public static void main(String[] args) { int s[]={89998,9,3,2,98,236,115,5,9,9087,100,67,1,756}; int r[]=map(s);
//打印结果 StringBuilder sb=new StringBuilder(); for (int i = 0; i < r.length; i++) { sb.append(r[i]); sb.append(","); } System.out.println(sb.toString()); }
public static int[] map(int one[]){ if(one.length>2){ int [] head= Arrays.copyOf(one,one.length/2); int[] r1=map(head); int [] tail=Arrays.copyOfRange(one,one.length/2,one.length); int [] r2=map(tail); return merge(r1,r2); }else if(one.length==2){ if(one[0]>one[1]){ int temp=one[0]; one[0]=one[1]; one[1]=temp; } return one; }else{ return one; } } public static int[] merge(int[] r1,int [] r2){ int [] merge=new int[r1.length+r2.length]; int i1=0,i2=0; for(int i=0;i<(r1.length+r2.length);i++){ if((r1.length!=i1)&&(i2==r2.length||r1[i1]<r2[i2])){ merge[i]=r1[i1]; i1++; }else{ merge[i]=r2[i2]; i2++; } } return merge; }