next up previous contents
Next: Tabelas hash Up: Ordenação Previous: Ordenação por contagem   Sumário

Usando rotinas de ordenação em C

A biblioteca padrão C oferece implementações genéricas da rotina de ordenação quicksort, a função qsort, cujo protótipo está definido no arquivo de cabeçalho stdlib.h:

   void qsort(void *base, size_t nmemb, size_t size,
              int (*compar)(const void *, const void *))

Os argumentos de qsort indicam o início do arranjo que deve ser ordenado (base), a quantidade de elementos (nmemb) e o tamanho de cada elemento do arranjo (size). O último argumento é o ponteiro para a função que sabe como comparar dois elementos do arranjo.

Assim como para bsearch (Seção 2.3.3), é necessário que o programador indique como deve ser realizada a comparação entre dois elementos da estrutura que será ordenada. Para tanto, uma função deve ser definida que receba dois argumentos que são referências para cada um dos elementos. Essa função retorna um valor inteiro, que deve ser:

menor que 0
se o primeiro elemento preceder o segundo elemento no critério de ordenação estabelecido;

maior que 0
se o primeiro elemento suceder o segundo elemento no critério de ordenação estabelecido; ou

igual a 0
quando os dois elementos forem iguais.

Por exemplo, para a comparação de elementos do tipo inteiro a função de comparação poderia ser a mesma já apresentada na Seção 2.3.3. Usando um exemplo similar àquele, para utilizar qsort para ordenar o arranjo de SIZE inteiros poderia se utilizar a invocação

  qsort(array,SIZE,sizeof(int),compara);


next up previous contents
Next: Tabelas hash Up: Ordenação Previous: Ordenação por contagem   Sumário
Ivan L. M. Ricarte 2003-02-14