归并排序—java实现

package test;


import java.util.Arrays;
/**
 * 归并排序
 * @author huanghuankun
 *
 */
public class MerageSort {

    public static int[] merage_sort(int array[]){
    if(array.length<2){
    return array;
    }
    int middle = array.length % 2 == 0 ? array.length / 2 : (array.length - 1) / 2;
    int left[] = Arrays.copyOfRange(array, 0, middle);
    int right[] = Arrays.copyOfRange(array, middle,array.length);
    int lres[] = merage_sort(left);
    int rres[] = merage_sort(right);
    return merage(lres,rres);
    }
    public static int[] merage(int left_array[],int right_array[]){
    int merage_array[] = new int[left_array.length+right_array.length];
    int left_index = 0;
    int right_index = 0;
    int merage_index = 0;
    while(left_index<left_array.length && right_index<right_array.length){
    if(left_array[left_index]<=right_array[right_index]){
    merage_array[merage_index++] = left_array[left_index++];
    }else{
    merage_array[merage_index++] = right_array[right_index++];
    }
    }
    if(left_index==left_array.length){
    while(right_index<right_array.length){
    merage_array[merage_index++] = right_array[right_index++];
    }
    }
    if(right_index==right_array.length){
    while(left_index<left_array.length){
    merage_array[merage_index++] = left_array[left_index++];
    }
    }
    return merage_array;
    }
public static void print(int array[]){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+",");
}
System.out.println();
}
public static void main(String[] args){
int array[] = {1,-4,8,3,2,0,5,7,9,10};
print(array);
int sortedArray[] = merage_sort(array);
print(sortedArray);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值