合并排序

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;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值