2010-11-16 10 views

Répondre

0

De This Question, vient une modification de perles Trier utilisant O(N) espace supplémentaire au lieu de O(N*k) comme dans la version code Rosetta.

void sort(int A[], int N) 
{ 
    int i, j; 
    int *R = calloc(N, sizeof(int)); 

    do for (i = j = 0; i < N; i++) 
     if (A[i]) { R[j++]++; A[i]--; } 
    while (j); 

    for (j = N, i = 0; i < N; i++) 
     A[i] = R[--j]; // A is now sorted ascending. 

    free(R); 
} 

Cependant, il est au moins 10 fois plus lent que qsort, et il se aggrave plus vos éléments du tableau se. Je ne recommanderais pas de l'utiliser.