• 合并排序


    合并算法,指的是将两个已经排序的序列合并成一个序列的操作
    操作步骤:
    1. 建立一个数组C用来存放合并后的数
    2. 从数组A和数组B的首端开始比较,将大的元素放入C中
    3. 重复2操作,直至其中一个数组的元素被用完,则将另一个数组中剩余的元素拷贝到C中
    比较复杂度:n㏒n
    交换(赋值)复杂度:n㏒n
    优点:比较快速的排序算法
    缺点:需要额外的空间存放临时数组

    private static void merge(Integer[] array,final int left,final int leftEnd, final int rightEnd){
            Integer[] mergeResult = new Integer[rightEnd-left+1];
            int i = 0; //mergeResult的下标
            int j = left; //left 的下标
            int k = leftEnd+1; //right 的下标
            
            //将两个数组中较小的元素拷贝到mergeResult中
            
            while(j<=leftEnd&&k<=rightEnd){
                if(array[j]<array[k]){
                    mergeResult[i++] = array[j++];
                }else{
                    mergeResult[i++] = array[k++];
                }
            }
            //将另一个数组中剩余的元素拷贝到mergeResult中
            while(j<=leftEnd){
                mergeResult[i++] = array[j++];
            }
            while(k<=rightEnd){
                mergeResult[i++] = array[k++];
            }    
            //copy mergeResult to array
            int leftPos = left;
            for(int m=0;m<mergeResult.length;m++,leftPos++){
                array[leftPos] = mergeResult[m];
            }
        }
    private static void mergeSort(Integer[] array,final int left,final int leftEnd, final int rightEnd){    
            if(left>=rightEnd){            
                return;
            }
            mergeSort(array,left,(left+leftEnd)/2,leftEnd);
            mergeSort(array,leftEnd+1,(leftEnd+1+rightEnd)/2,rightEnd);
            merge(array,left,leftEnd,rightEnd);
        }
    public static void mergeSort(Integer[] array){
            mergeSort(array,0,(array.length)/2,array.length-1);
        }
  • 相关阅读:
    JVM 体系结构介绍
    视频编解码学习之三:变换,量化与熵编码
    视频编解码学习之二:编解码框架
    视频编解码学习之一:理论基础
    openmax component类的继承关系
    OpenMax的接口与实现
    android中OpenMax的实现【3】OMX中主要成员
    android中OpenMax的实现【2】AwesomePlayer中openmax的入口
    Objective-C——消息、Category和Protocol
    vue axios 攻略
  • 原文地址:https://www.cnblogs.com/tangyanbo/p/4282333.html
Copyright © 2020-2023  润新知