zoukankan      html  css  js  c++  java
  • 归并排序

     /**
         * 借助临时数组进行移动
         */
        @Test
        public void mergerSort(){
            int[] arr={1,4,5,6,7,8,3,2,4,6,7,3,5,6,4,3,2};
            int[] temp = new int[arr.length];
            mergerSort(arr,0,arr.length-1,temp);
            System.out.println(Arrays.toString(arr));
    
        }
    
        public void mergerSort(int[] arr,int left,int right,int[] temp){
            if(left<right){
                int mid=(right+left)/2;
                mergerSort(arr,left,mid,temp);
                mergerSort(arr,mid+1,right,temp);
                merger(arr,left,mid,right,temp);
            }
        }
    
        public void merger(int[] arr,int left,int mid,int right,int[] temp){
            int i=left;//左序列
            int j=mid+1;//右序列
            int t=0;//临时序列
            while (i<=mid && j<=right){
                if(arr[i]<=arr[j]){
                    temp[t++]=arr[i++];
                }else {
                    temp[t++]=arr[j++];
                }
            }
    
            while (i<=mid){
                temp[t++]=arr[i++];
            }
            while (j<=right){
                temp[t++]=arr[j++];
            }
            t=0;
            while (left<=right){
                arr[left++]=temp[t++];
            }
    
        }
    View Code

    归并排序算法实现

    大致思路:

    1、首先对数组进行切分,分成最小单元

    2、然后进行数据合并,使用临时进行

    比如  1 ,4,,5,6,7,8   分成独立的个体,之后组织    14     56     78   之后在   14和56合并排序,之后在和78排序     

  • 相关阅读:
    寒假每日总结(八)
    寒假每日总结(七)
    寒假每日总结(六)
    2020-2.19
    2020-2.18
    寒假每日总结-2020.2.11
    寒假每日总结-2020.2.10
    寒假每日总结-2020.2.9
    寒假每日总结
    寒假每日总结——2020.2.6
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/9092890.html
Copyright © 2011-2022 走看看