首页 > 解决方案 > 如何使用我的计数排序代码实现基数排序以处理负数

问题描述

我正在尝试使用我的计数排序算法来实现基数排序算法。(计数已经适用于负数)。

void counting_sortrdx(int *vet, int mmax, int min, int n, int dig){
    int i,j, C[10],B[n];

    for (i=0;i<10;i++){
        C[i]=0;
    }

    for (i=0;i<n;i++){
        C[((vet[i]-min)/dig)%10]++;
    }

    for (i=1;i<10;i++){
        C[i]=C[i]+C[i-1];
    }


    for (i=n-1;i>=0;i--){
        B[C[((vet[i]-min)/dig)%10]-1]=vet[i];
        C[((vet[i]-min)/dig)%10]--;
    }


    for (i=0;i<tam;i++){
        vet[i]=B[i];
    } 

}

void radix_sort(int *vet, int max, int min, int n){
    int dig, i;

    for (dig = 1; max/dig > 0; dig=dig*10){ 
        counting_sortrdx(vet, max, min, n, dig); 
    }

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

标签: ccountingnegative-numberradix-sort

解决方案


推荐阅读