归并排序


 public void mergesort(int[] tmp,int left,int right,int[] arr){
        int mid=(left+right)/2;
        mergesort(tmp,left,mid,arr);
        mergesort(tmp,mid+1,right,arr);
        merge(tmp,left,mid,right,arr);
   }

   public void merge(int[] tmp,int left,int mid,int right,int[] arr){
        int i=left;
        int j=mid+1;
        int t=0;
        while (left<=mid&&j<=right){
            if(arr[i]<arr[j]){
                tmp[t++]=arr[i++];
            }else {
                tmp[t++]=arr[j++];
            }
        }

        while (i<=mid){
            tmp[t++]=arr[i++];
        }
        while (j<=right){
            tmp[t++]=arr[j++];
        }

        t=0;
        while (left<=right){
            arr[left++]=tmp[t++];
        }
   }
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务