归并排序+java实现

import java.util.Arrays;

public class MergeSort {
    
    public static void merge(int[] a,int low,int mid,int high) {
        int i,j,k;
        int[] b=new int[a.length];
        for(k=low;k<=high;k++) b[k]=a[k];
        for(i=low,j=mid+1,k=i;i<=mid&&j<=high;k++) {
            if(b[i]<=b[j]) 
                a[k]=b[i++];
            else 
                a[k]=b[j++];
        }
        while(i<=mid) a[k++]=b[i++];
        while(j<=high) a[k++]=b[j++];
    }
    
    public static void mergeSort(int[] a,int low,int high) {
        if(low<high) {
            int mid=(low+high)/2;       //注意!括号 !!(low+high)
            mergeSort(a,low,mid);
            mergeSort(a,mid+1,high);
            merge(a,low,mid,high);
        }
    }
    
    public static void mergeSort(int[] a) {
        int low=0;
        int high=a.length-1;            //注意!要-1!!
        mergeSort(a,low,high);
    }
    
    public static void main(String[] args) {
        int[] a= {12,32,24,99,54,76,48};
        mergeSort(a);
        System.out.println(Arrays.toString(a));
    }
}
原文地址:https://www.cnblogs.com/heyboom/p/8990747.html