zoukankan      html  css  js  c++  java
  • 基数排序

    /*
    据说这玩意快.....不过实测的情况QAQ 
    数比较小的时候还可以 优于桶排
    数大的时候 10^5 就没他什么事了
    似乎用处并不是很大 
    */
    #include<cstdio>
    #include<ctime>
    #include<algorithm>
    #define maxn 100000010
    using namespace std;
    int n,a[maxn],c[maxn],b[maxn];
    int init(){
        int x=0,f=1;char s=getchar();
        while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
        while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
        return x*f;
    }
    int Get(){
        int r=1;
        for(int i=1;i<=n;i++)
            while(a[i]>r)r*=10;
        return r;
    }
    void Jsort(){
        int mx=Get(),x=1;
        for(int k=1;k<=mx;k*=10){
            for(int i=0;i<=9;i++)c[i]=0;
            for(int i=1;i<=n;i++){
                int y=a[i]/x%10;c[y]++;
            }
            for(int i=0;i<=9;i++)
                c[i]=c[i-1]+c[i];
            for(int i=n;i>=1;i--){
                int y=a[i]/x%10;
                b[c[y]]=a[i];c[y]--;
            }
            for(int i=1;i<=n;i++)
                a[i]=b[i];
            x*=10;
        }
    }
    int main()
    {
        n=init();
        for(int i=1;i<=n;i++)
            a[i]=init();
        Jsort();//sort(a+1,a+1+n);
        for(int i=1;i<=n;i++)
            printf("%d ",a[i]);
        return 0;
    }
  • 相关阅读:
    mysql的四种隔离
    mysql-事物
    Mysql数据备份
    线程池
    springboot整合log4j2
    springboot项目部署
    数组去重
    倒叙输出算法
    使用LLDB和debugserver对ios程序进行调试
    Linux使用pyinstaller 编译py成可执行程序
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/6048238.html
Copyright © 2011-2022 走看看