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;
    }
    
    
    追求吾之所爱
  • 相关阅读:
    导出 IIS 站点及配置
    redis
    mongo常用
    mongo分片集群
    mysql常用
    elk安装
    Oracle数据库迁移文档
    笔记
    ping 。sh
    光衰报警
  • 原文地址:https://www.cnblogs.com/rstz/p/14391094.html
Copyright © 2011-2022 走看看