首页 > 编程语言 > 详细

归并排序

时间:2020-07-04 15:54:46      阅读:60      评论:0      收藏:0      [点我收藏+]

https://www.bilibili.com/video/BV1Zt411o7Rn?p=25

参考:这个视频借鉴的归并写法

主要逻辑在对排好后的两个数组进行归并逻辑,就是有一个指向第一个数组的指针i和指向第二个数组的指针j

进行比较并将小的结果放进临时数组,直到一方遍历完成为止,然后再把没有遍历完的数组以此进入数组即可

 private static void mergeSort(int[] arr, int start , int end){
        if(start >= end){
            return;
        }
        int mid = (end + start) / 2;
        mergeSort(arr,start,mid);
        mergeSort(arr,mid+1,end);
        merge(arr,start,mid ,end);
    }

    private static void merge(int[] arr, int start, int mid, int end) {
        int[] temp = new int[end - start + 1];
        int leftIndex = start;
        int rightIndex = mid + 1;
        int index = 0;
        while (leftIndex <= mid && rightIndex <= end ){
            if(arr[leftIndex] < arr[rightIndex]){
                temp[index] = arr[leftIndex];
                leftIndex++;
            }else {
                temp[index] = arr[rightIndex];
                rightIndex++;
            }
            index++;
        }
        while (leftIndex <= mid){
            temp[index] = arr[leftIndex];
            leftIndex++;
            index++;
        }
        while (rightIndex <= end){
            temp[index] = arr[rightIndex];
            rightIndex++;
            index++;
        }

        for (int i = 0; i < temp.length; i++) {
            arr[start + i] = temp[i];
        }
    }

 

归并排序

原文:https://www.cnblogs.com/dongma/p/13235041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!