Как реализовать сортировку по основанию для работы с отрицательными числами, используя мой код сортировки подсчета - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь использовать свой алгоритм сортировки подсчета для реализации алгоритма сортировки по основанию (подсчет уже работает с отрицательными числами).

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]);
    } 
}
...