合并排序

2020-12-13 16:28

阅读:559

标签:合并   return   复杂   复制   sort   ati   static   length   mergesort   

合归并排序需要 ,先排序,再 合并。复杂度为O(nlogn);空间复杂度为O(N)。需要额外的数组,保存复制已排序的数组到原数组中。

 public static void  mergeSort(int [] a,int l,int r){
        if(l==r)
            return ;
        int mid=l+(r-l)/2;
        mergeSort(a,l,mid);
        mergeSort(a,mid+1,r);
        merge(a,l,mid,r);
    }
    public static void merge(int [] a,int l,int m,int r){
        int i=l;
        int p1=l;
        int p2=m+1;
        int [] tmp=new int[r-1+1];
        while(p1r){
            tmp[i++]=a[p1]];
        }
        while(p1m){
            tmp[i++]=a[p1++];
        }
        while(p2r){
            tmp[i++]=a[p2++];
        }
        for(int j=0;j){
            a[l+j]=tmp[j];
        }
    }

 

合并排序

标签:合并   return   复杂   复制   sort   ati   static   length   mergesort   

原文地址:https://www.cnblogs.com/bowenqianngzhibushiwo/p/11620066.html


评论


亲,登录后才可以留言!