C · Intermediário · Inglês · Técnico
qsort
Função de stdlib.h que ordena um array de qualquer tipo, recebendo o tamanho de cada elemento e um ponteiro para função que compara dois elementos.
Onde usar
Como C não tem genéricos, qsort usa void * e um comparador. Em code review se procura o bug clássico de comparar por subtração, que pode estourar o int.
Em código
#include <stdlib.h>
static int cmp(const void *a, const void *b) {
const int *x = a, *y = b;
return (*x > *y) - (*x < *y);
}
// qsort(v, n, sizeof v[0], cmp);Exemplos
Pass a comparator to qsort and cast the void pointers inside it.
Passe um comparador para o qsort e faça o cast dos void pointers dentro dele.
Your comparator subtracts, so it overflows on big values.
Seu comparador subtrai, então estoura com valores grandes.
Cuidado
Escrever o comparador como return *a - *b: com valores extremos ele estoura; prefira (x > y) - (x < y).
Sinônimos
ordenação genérica
Origem
Abreviação de quick sort, ordenação rápida.