zoukankan      html  css  js  c++  java
  • 合并古典白话的排序算法



    void Merge(int A[],int p,int q,int r){
        int i,j,k;
        //计算子数组A[p..q]的元素个数
        int n1 = q - p + 1;
        //计算子数组A[q+1..r]元素个数
        int n2 = r - q;
        //创建子数组L,R
        int* L = (int*)malloc(sizeof(int)*(n1+1));
        int* R = (int*)malloc(sizeof(int)*(n2+1));
        //将子数组A[p..q]赋值到L数组
        for(i = 0;i < n1;i++){
            L[i] = A[p+i];
        }//for
        //将子数组A[q+1..r]赋值到R数组
        for(i = 0;i < n2;i++){
            R[i] = A[q+1+i];
        }//for
        //将哨兵置于数组末尾
        L[n1] = INT_MAX;
        R[n2] = INT_MAX;
        //合并
        i = 0;j = 0;
        for(k = p;k <= r;k++){
            if(L[i] <= R[j]){
                A[k] = L[i++];
            }else{
                A[k] = R[j++];
            }
        }//for
    }
    void MergeSort(int A[],int p,int r){
        //容错
        if(p >= r){
            return;
        }
        //分治
        int mid = (r + p) / 2;
        //递归调用
        MergeSort(A,p,mid);
        MergeSort(A,mid+1,r);
        //Cmbine
        Merge(A,p,mid,r);
    }
    转让:
    int a[] = {1,3,5,7,8,2,3,5,6,9};
    MergeSort(a,0,9);
    


  • 相关阅读:
    python常用库
    python多线程
    python内存泄漏
    用python实现js语言里的特性
    nginx + uwsgi
    mysql语句
    urllib模块
    提取数据xpath,re,css
    selenium模块
    脱壳
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5038044.html
Copyright © 2011-2022 走看看