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

    合并2个已排序的表

    先将初始数组的两段完成排序后放在新数组中,再拷贝回去,由于采用递归方法处理,所以会将最下面的2个元素的先排序,1个的直接被返回了

    这个过程一直重复直到完成

    void MSort(ElementType A[], ElementType TmpArray[], int Left, int Right) {
        int center;
        if (Left < Right) {
            center = (Left + Right)/2;
            MSort(A, TmpArray, Left, center);
            MSort(A, TmpArray, center+1, Right);
            Merge(A, TmpArray, Left, center+1, Right);
        }
    }
    
    void MergeSort(ELementTYpe A[], int N) {
        ELementTYpe *TmpArray = malloc(N*sizeof(ELementTYpe));
        if (TmpArray != NULL) {
            MSort(A, TmpArray, 0, N-1);
            free(TmpArray);
        }
    }
    
    void Merge(ElementType A[]; ElementType TmpArray[]; int Lpos; int Rpos; int RightEnd) {
        int i, LeftEnd, NumElements, TmpPos;
        LeftEnd = Rpos - 1;
        TmpPos = Lpos;
        NumElements = RightEnd - Lpos + 1;
    
        while (Lpos<=LeftEnd && Rpos<=RightEnd) {
            if (A[Lpos]<=A[Rpos]) {
                TmpArray[TmpPos++] = A[LPos++];
            }
            else {
                TmpArray[TmpPos++] = A[Rpos++]
            }
        }
    
        while (Lpos <= LeftEnd) {
            TmpArray[TmpPos++] = A[Lpos++];
        }
        while (Rpos <+ RightEnd) {
            TmpArray[TmpPos++] = A[Rpos++];
        }
    
        for (i=0; i<NumElements; i++,RightEnd--) {
            A[RightEnd] = TmpArray[RightEnd];
        }
    }
  • 相关阅读:
    非vue-cli的花括号闪现问题
    vue中实现图片全屏缩放预览,支持移动端
    vue 图片预览插件
    angular.uppercase()
    angular.toJson()
    angular.module()
    对AngularJs的简单了解
    jQuery的属性、遍历和HTML操作
    JQuery函数
    JQuery的选择器
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7257885.html
Copyright © 2011-2022 走看看