zoukankan      html  css  js  c++  java
  • 归并排序用递归实现[分治思想]

    引用https://www.cnblogs.com/chengxiao/p/6194356.html

    #include<iostream>
    using namespace std;
    const int maxn=1000;
    int a[maxn],r[maxn];
    void msort(int s,int t)
    {
        if(s==t)return ;//如果只有一个数则不用排序返回
        int mid=(s+t)/2;
        msort(s,mid);//分解左序列,分解到一个在返回
        msort(mid+1,t);//分解右序列
        int i=s,j=mid+1,k=s;//接下来合并序列
    
        while(i<=mid&&j<=t)//当一个序列输出完,才会结束循环
        {
            if(a[i]<=a[j])
            {
                r[k]=a[i];k++;i++;
            }
            else
            {
                r[k]=a[j];k++;j++;
            }
        }//又因为不知到是那个序列先结束
        while(i<=mid)//复制左边剩下的序列
        {
            r[k]=a[i];k++;i++;
        }
        while(j<=t)//复制右边子序列剩余排序
        {
            r[k]=a[j];k++;j++;
        }
        for(int i=s;i<=t;i++)a[i]=r[i];
    }
    int main()
    {
        int n;
        cin >> n;
        for(int i=1;i<=n;i++)
        {
            cin >> a[i];
        }
        msort(1,n);
        for(int i=1;i<=n;i++)
            cout<<a[i]<<" ";
        return 0;
    }
    
    
    追求吾之所爱
  • 相关阅读:
    1105 Spiral Matrix
    Spring Boot 单元测试
    第一个 Spring Boot 应用程序
    Spring Boot 优缺点
    Spring Boot 简介
    第一个 Spring 应用程序
    Spring 体系结构
    Spring 与 IoC
    Spring 的特点
    Spring 简介
  • 原文地址:https://www.cnblogs.com/rstz/p/12393223.html
Copyright © 2011-2022 走看看