基数排序

2020-12-25 16:27

阅读:502

标签:radix   exit   lib   int   style   ++   base   span   std   

技术图片

 

 

#include
#includevoid print_arr(int arr[],int N)
{
    int i;
    for(i=0;i)
    {
        printf("%d ",arr[i]);
    }
}
void radix_sort(int A[],int N)
{
    int max=A[0];
    
    int i;
    for(i=0;i)
    {
        max=(max>A[i])?max:A[i];
    }
    
    int *t=(int *)malloc(sizeof(int)*N);
    if(NULL==t)/*NULL==t比t==NULl安全,如果将==写成=,NULL=t会报错,因为不能将变量的值赋给常数*/
    {
        printf("F");
        exit(1);
    }
int base=1;
    while(max/base>0)/*错误:max/base>=10,最后一次无法进入循环*/
    {
        int count[10]={0};
        
        for(i=0;i)
        {
            count[(A[i]/base)%10]++;
        }
        
        for(i=1;i10;i++)
        {
            count[i]=count[i]+count[i-1];
        }
        
        for(i=N-1;i>=0;i--)/*粗心的错误:i++*/ 
        {
            t[count[(A[i]/base)%10]-1]=A[i];
            count[(A[i]/base)%10]--;
        }
        
        for(i=0;i)
        {
            A[i]=t[i];
        }
        
        base*=10;
    }
} 

int main()
{
    int A[7]={100,34,1002,1234,66,137,49};
    int N=7;
    radix_sort(A,N);
    
    int i;
    for(i=0;i)
    {
        printf("%d ",A[i]);
    }
    return 0;
}

 

基数排序

标签:radix   exit   lib   int   style   ++   base   span   std   

原文地址:https://www.cnblogs.com/angury/p/13038669.html


评论


亲,登录后才可以留言!