J'ai une grande liste d'entiers positifs dans un tableau et j'aimerais utiliser un tri de perles mais j'ai trouvé que ce n'était pas bien documenté. Quelqu'un at-il le code pour un tri de perles?c sorte de tri aimerait avoir de l'aide
1
A
Répondre
2
Cette page a mises en œuvre en plusieurs langues, y compris C: http://rosettacode.org/wiki/Sorting_algorithms/Bead_sort
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.