码迷,mamicode.com
首页 > 编程语言 > 详细

归并排序

时间:2016-04-22 06:48:14      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

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

分治法:

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

治:将更小的问题解决。

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

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

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

归并排序

标签:

原文地址:http://www.cnblogs.com/Rui-Jia/p/5419614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!