每天一种算法-归并排序

来源:互联网 发布:阿里云客服能拿多少钱 编辑:程序博客网 时间:2024/05/29 15:05

Java实现

package bigo;public class merge {    static void merge(int src[], int left,int right,int mid){        int i=left,j=mid;        int m=mid+1,n=right;        int k=0;        int help[] = new int[src.length];        while(i<=j && m<=n){            if(src[i] <= src[m])                help[k++] = src[i++];            if(src[i] > src[m])                help[k++] = src[m++];        }        while(i<=j){            help[k++] = src[i++];        }        while(m<=n){            help[k++] = src[m++];        }        for(i=0;i<k;i++){            src[left+i] = help[i];        }    }    static void merge_sort(int src[], int left, int right)    {        if(left >= right)            return;        int mid = left+ (right-left)/2;        merge_sort(src,left,mid);        merge_sort(src,mid+1,right);        merge(src,left,right,mid);    }    public static void main(String[] args) {        int src[] = {9,8,7,6,5,4,3,3,2,2,1,0,0,-1};        merge_sort(src,0,src.length-1);        for (int i = 0; i < src.length; i++) {            System.out.println(src[i]);        }    }}
0 0
原创粉丝点击