Utilizando a função QSort em C
Neste artigo darei uma breve introdução a ponteiros de funções: O que são? Como declará-los? É possível usá-los?. Além disso falaremos de uma função muito mistificada por nós brasileiros, a QSort. A QSort é definida pelo ANSI C e seu nome se deve a utilizar o algoritmo QuickSort.
Parte 5: Conclusões
Primeiro de tudo queria pedir desculpas por não dar mais
exemplos de ponteiros de funções. O fato é que o artigo tenta
desmistificar a função QSort e não como ponteiros de funções
funcionam.
Queria aproveitar para falar um pouquinho mais da função que o QSort fica dependente. Quem leu com atenção e é amante do C deve ter notado alguma semelhança com outra função, pois é! É altamente recomendável utilizar strcmp() quando for possível para aliviar o trabalho dos if's.
Quem quiser saber mais consulte as páginas do man.
$ man qsort
Ou visite esses sites:
[]'s
Queria aproveitar para falar um pouquinho mais da função que o QSort fica dependente. Quem leu com atenção e é amante do C deve ter notado alguma semelhança com outra função, pois é! É altamente recomendável utilizar strcmp() quando for possível para aliviar o trabalho dos if's.
Quem quiser saber mais consulte as páginas do man.
$ man qsort
Ou visite esses sites:
- http://www.cplusplus.com/ref/cstdlib/qsort.html
- http://www.phim.unibe.ch/comp_doc/c_manual/C/EXAMPLES/qsort1.c
- http://refcards.com/refcards/c/c-refcard-fullpage.pdf
- http://www.function-pointer.org/
[]'s
Notei que você usou cast dentro da função que compara os valores, tem outro meio de fazer isso (as vezes até mais facil).
A função para comparar você já define como inteiro..
int compara(int *x, int *y)
{
if (*x > *y)
return 1;
else if (*x == *y)
return 0;
else if (*x < *y)
return -1;
}
E na hora de usar o qsort você faz um cast para void* na função...
qsort( vetor, (size_t) tamanho, sizeof(int), (void *) compara );
Abraços,
Fiquem com Deus.