归并排序

    public static void mergeSort(int[] arr1,int left,int right){
        if(left>=right){
            return;
        }
        int middle=(left+right)/2;
        mergeSort(arr1,left,middle);
        mergeSort(arr1,middle+1,right);
        merge(arr1,left,right);
    }

    public static void merge(int[] arr1,int left,int right){
        int middle=(left+right)/2;
        int[] newArr=new int[right-left+1];
        int i1=left;
        int i2=middle+1;
        for(int i=0;i<newArr.length;i++){
            if(i1>middle){
                newArr[i]=arr1[i2];
                i2++;
            } else if(i2>right){
                newArr[i]=arr1[i1];
                i1++;
            }else if(arr1[i1]<arr1[i2]){
                newArr[i]=arr1[i1];
                i1++;
            } else{
                newArr[i]=arr1[i2];
                i2++;
            }
        }

        //跟新
        for(int i=0;i<newArr.length;i++){
            arr1[i+left]=newArr[i];
        }
posted @ 2022-08-24 11:10  无极是一种信仰  阅读(24)  评论(0)    收藏  举报