import java.util.Arrays;
/**
* 合并排序
*
*/
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;
}
}
合并排序
最新推荐文章于 2022-11-27 14:28:13 发布