基数排序模板

void work(vector<int>&a,int cnt){
    //a表示需要排序的数组,cnt表示数组中元素最高多少位
    //复杂度O(n*cnt)!
    for(int i=1,t=1;i<=cnt;i++,t*=10){
        vector<int>pre(10,0);
        vector<int>tmp(n);
        for(int j=0;j<n;j++){
            pre[(a[j]/t)%10]++;
        }
        for(int j=1;j<=9;j++){
            pre[j]+=pre[j-1];
        }
        for(int j=n-1;j>=0;j--){
            tmp[pre[(a[j]/t)%10]-1]=a[j];
            pre[(a[j]/t)%10]--;
        }
        a=tmp;
    }
}
posted @ 2025-10-10 16:49  Marinaco  阅读(4)  评论(0)    收藏  举报
//雪花飘落效果