zoukankan      html  css  js  c++  java
  • 合并排序--分治法思想

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXNUM 10000

    void Merge(int *A,int p,int q,int r)
    {
        int LeftSize=q-p+1+1;
        int RightSize=r-q+1;
        int *Left,*Right;
        int i,j,k;
        
        Left=(int*)malloc(LeftSize*sizeof(int));
        Right=(int*)malloc(RightSize*sizeof(int));

        for(i=0;i<q-p+1;i++)
            Left[i]=A[p+i];
        for(j=0;j<r-q;j++)
            Right[j]=A[q+j+1];
        
        Left[i]=MAXNUM;
        Right[j]=MAXNUM;

        for(k=p,i=0,j=0;k<r+1;k++)
            if(Left[i]<Right[j])
            {
                A[k]=Left[i];
                i++;
            }
            else
            {
                A[k]=Right[j];
                j++;
            }
            free(Left);
            free(Right);
    }

    void MergeSort(int *A,int p,int r)
    {
        int q;
        if(p<r)
        {
            q=(p+r)/2;
            MergeSort(A,p,q);
            MergeSort(A,q+1,r);
            Merge(A,p,q,r);
        }
    }
     int main()
     {
         int r[10]={1,2,3,4,5,2,3,4,5,7};
        int i;

        printf(" Before merging sort:");
            for(i=0; i<10; i++)        printf("%-3d",r[i]);
            printf(" ");
            MergeSort(r,0,9);
            printf("After merging sort:");
            for(i=0; i<10; i++)        printf("%-3d",r[i]);
            printf(" ");
            return 0;
        }

  • 相关阅读:
    移动端布局方案汇总&&原理解析
    Javascript运行机制
    git 使用
    async await详解
    vue使用axios调用豆瓣API跨域问题
    hash和history的区别
    http状态码
    XSS 和 CSRF简述及预防措施
    【pytorch】pytorch基础学习
    [源码解读] ResNet源码解读(pytorch)
  • 原文地址:https://www.cnblogs.com/jkred369/p/3574321.html
Copyright © 2011-2022 走看看