归并排序+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));
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM