数据结构与算法之归并排

2021-01-09 20:31

阅读:525

标签:color   merge   就是   and   string   code   中间   数据结构与算法   while   

归并排  就是一种分治的思想

将某个问题划分为n个小的同规模算法去解决

public class StudyMergeSort {

    /**
     * 归并排思路 :
     * 将一个数组分割成n个小组 然后每个小组两两比较
     */

    public static void main(String[] args) {
        int[] array = ArrayUtil.generateRandomArray(20, 20);

        ArrayUtil.printArray(array);
        mergeSort(array);
        System.out.println();
        ArrayUtil.printArray(array);
    }

    public static void mergeSort(int[] arr) {
        process(arr,0,arr.length-1);
    }

    public static void process(int[] arr, int L, int R) {


        if(L == R){
            return;
        }

        /** 中间数 */
        int M = L + ((R - L) >> 1);

        /** 分裂 */
        process(arr,L,M);
        process(arr,M+1,R);
        /** 合并 */
        merge(arr,L,M,R);
    }

    public static void merge(int[] arr, int L, int M, int R){
        int i = 0;
        int p1 = L;
        int p2 = M + 1;
        /** 辅助空间 */
        int [] help = new int [R - L  + 1];

        /** 将小的放到辅助空间中 */
        while(p1  R){
            help[i++] = arr[p1] ];
        }

        while(p1  M){
            help[i++] = arr[p1++];
        }

        while(p2  R){
            help[i++] = arr[p2++];
        }

        for (int j = 0; j ) {
            arr[L+j] = help[j];
        }

    }
}

 

数据结构与算法之归并排

标签:color   merge   就是   and   string   code   中间   数据结构与算法   while   

原文地址:https://www.cnblogs.com/self-crossing/p/12957926.html


评论


亲,登录后才可以留言!