A função qsort() da biblioteca stdlib.h (ou cstdlib em C++) ordena qualquer vetor em qualquer ordem que você queira.
qsort(vetor,quantidade,tamanho,função)
Onde:
vetor é o nome do vetor que você quer ordenar.
quantidade é o número de elementos do vetor.
tamanho é o tamanho em bytes de cada elemento do vetor. coloque como parâmetro, a função sizeof(nome_da_variável). A função pode ser qualquer nome que você queira.
função é o nome da função que fará as comparações que a função qsort() enviará como parâmetro. Você terá que fazer essa função da seguinte forma:
int comparador(const void *valor1,const void *valor2)
{
int numero1=*(int *)valor1,int *numero2=*(int *)valor2;
if(numero1>numero2)
return 1;
else if (numero1<numero2)
return -1;
else
return 0;
}
Os parâmetros deverão ser (const void *) sempre! E onde está int, alterem para o tipo de variáveis do vetor.
Caso queira ordenar em ordem decrescente, inverta as condições.
Nunca esqueça de fazer o cast (conversor), convertendo as variáveis void para o tipo de dado do vetor que você quer ordenar.
Para ordenar uma matriz de caracteres (strings) em ordem crescente, faça a função da seguinte forma:
Question
bruce845
A função qsort() da biblioteca stdlib.h (ou cstdlib em C++) ordena qualquer vetor em qualquer ordem que você queira.
Onde: vetor é o nome do vetor que você quer ordenar. quantidade é o número de elementos do vetor. tamanho é o tamanho em bytes de cada elemento do vetor. coloque como parâmetro, a função sizeof(nome_da_variável). A função pode ser qualquer nome que você queira. função é o nome da função que fará as comparações que a função qsort() enviará como parâmetro. Você terá que fazer essa função da seguinte forma: Os parâmetros deverão ser (const void *) sempre! E onde está int, alterem para o tipo de variáveis do vetor. Caso queira ordenar em ordem decrescente, inverta as condições. Nunca esqueça de fazer o cast (conversor), convertendo as variáveis void para o tipo de dado do vetor que você quer ordenar. Para ordenar uma matriz de caracteres (strings) em ordem crescente, faça a função da seguinte forma:Espero ter ajudado!
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.