归并排序

归并排序是分治法的典型代表。

分治法:

分:将一个问题分解为更小的问题。

治:将更小的问题解决。

并:将解决好的更小问题并起来就是大问题的结果。

public class MergeSort {
    public static void main(String[] args) {
        int[] a={3,7,2,9,15,11};
        mergesort(a,0,a.length-1);
        for(int i:a)
            System.out.print(i+"\t");
    }
    private static void mergesort(int[] a,int left,int right){
        int mid=(right+left)/2;
        if(left<right){
            mergesort(a,left,mid);
            mergesort(a,mid+1,right);
            merge(a,left,mid,right);
        }
    }
    private static void merge(int[] a,int left,int mid,int right){
        int[] c=new int[a.length];
        int i=left,j=mid+1,t=left;
        while(left<=mid&&j<=right){
            if(a[left]<=a[j]){
                c[t++]=a[left++];
            }
            else{
                c[t++]=a[j++];
            }
        }
            while(j<=right){
                c[t++]=a[j++];
            }
            while(left<=mid){
                c[t++]=a[left++];
            }
        
             while (i <= left) {  
                    a[i] = c[i++];  
                }  
    }
}

坚持每天更新!!每天回顾!!

posted @ 2016-04-22 00:50  Rui_Jia  阅读(125)  评论(0编辑  收藏  举报