Olá pessoal, sou o Filipe Névola, este blog foi muito ativo durante 2009 enquanto eu fazia universidade,
hoje em dia estou ativo no Twitter @FilipeNevola e voltando a escrever posts agora no meu perfil do Medium (29/05/2016).

[ 18/05/2009 ] 1

qsort, o Quick-Sort pronto para usar em C

Quando necessitar de um algoritmo de ordenação em um trabalho, na maratona de programação ou até mesmo para um serviço comercial e não ter disponibilidade de tempo para implementá-lo use o qsort. Ele já está pronto e é fácil de usar. Gostou da idéia ? Então vamos ao que interessa: Como usar!

Breve Descrição: Função pertencente à biblioteca stdlib.h que ordena um vetor usando o algoritmo quicksort.

Exemplo: qsort (vetor, numeroElementos, sizeof(vetor), compare);

O último parâmetro passado para esta função é o nome da função que irá determinar o critério de comparação. Sendo assim podemos ordenar qualquer tipo de dados, até mesmo structs através do qsort, basta “ensinar” para ele como fazer isso.

Exemplo de compare para inteiros:
int compare (const void * a, const void * b){
    return ( *(int*)a - *(int*)b );
} 

Exemplo de compare para um struct:
struct Times{
    char nome[21];
    int vitorias,sets,pontosmarcados;
};

int compare(const void *a,const void *b){
    Times *x=(Times*)a;
    Times *y=(Times*)b;
    /*criterios*/
    if(x->vitorias!=y->vitorias)//1 - vitorias, maior primeiro
        return y->vitorias-x->vitorias;
    if(x->sets!=y->sets)//2 - sets, maior primeiro
        return y->sets-x->sets;
    if(x->pontosmarcados!=y->pontosmarcados)//3 - pontos marcados, maior primeiro
        return y->pontosmarcados-x->pontosmarcados;
    return (strcmp(x->nome,y->nome));//ordem alfabetica
}
Anônimo comentou:

Belo post..
Parabéns..

Novo Comentário