其他分享
首页 > 其他分享> > 基数排序个人总结

基数排序个人总结

作者:互联网

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int MaxNum=0;
int main(){
    int n;
    scanf("%d",&n);
    int*a=(int*)malloc(sizeof(int)*n);

    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        if(MaxNum<a[i])
            MaxNum=a[i];
    }
    int Num=0;
    while(MaxNum){///find the bigest Numbersize
        Num++;
        MaxNum/=10;
    }

    int in=1;
    int temp[n];
   for(int z=0;z<Num;z++){//执行的次数是最大数位的基数
        int Count[10]={0};
        for(int i=0;i<n;i++){
            Count[(a[i]/in)%10]++;//基数相同时候的数的个数
        }
        for(int j=1;j<10;j++)//import way 把每个基数个数加到后面其实就是对下面的求解A
            Count[j]+=Count[j-1];
        for(int j=n-1;j>=0;j--){
            int k=a[j]/in%10;
            temp[Count[k]-1]=a[j];//加上前面的基数个数其实就是找到此数应该有的位置
            Count[k]--;
        }
        for(int j=0;j<n;j++)
            a[j]=temp[j];
        in*=10;

   }
   for(int i=0;i<n;i++)
   {
       printf("%d ",a[i]);
   }
   free(a);



}

 for(int j=1;j<10;j++)//import way 把每个基数个数加到后面其实就是对下面的求解A
            Count[j]+=Count[j-1];
        for(int j=n-1;j>=0;j--){
            int k=a[j]/in%10;
            temp[Count[k]-1]=a[j];//加上前面的基数个数其实就是找到此数应该有的位置
            Count[k]--;
        }

最关键的

 图片转载与菜鸟

标签:总结,Count,个人,int,--,基数排序,in%,include,此数
来源: https://blog.csdn.net/weixin_54095243/article/details/121399899