Neste exemplo que trago agora vou mostrar como ordenar uma um vetor de estrutura
usando a função qsort(); da biblioteca padrão stdlib.h do C.
A função qsort(); é derivada de uma série de refinamento da famosa
e antiga função quicksort(); e na realidade passou a ser padrão há alguns anos
atrás, o que mais me impressiona é a facilidade de uso em imprementações para ordenação
em qualquer tipo de dados do C, e mesmo assim não é muito usada, nem sei porque
se evitam tanto esta função, talvez seja por não conhecê-la...
A função qsort(); utiliza alguns parâmetros veja na sua síntaxe abaixo:
void qsort (void* base, size_t num, size_t size,
int (*compar)(const void*,const void*));
onde base: é um Ponteiro genérico para o primeiro elementoo da matriz a ser
ordenado, a importância de ser ponteiro genérico se refere a poder usar a função
com qualquer tipo de dados do C.
num: Número de elementos na matriz apontada por base.
size_t: é um tipo integral sem sinal.
tamanho: Tamanho em bytes de cada elemento na matriz.
size_t é um tipo integral sem sinal.
compar: Ponteiro para uma função que compara dois elementos.
Essa função é chamada repetidamente por qsort para comparar dois elementos até
que todos tenham sido comparados e consequentemente ordenados.
Talvez entender esta função seja bem mais complicado do que saber usá-la
nos nossos programas, na verdade para entender a função qsort(); devemos primeiro
entender o comportamento de ponteiro para função que é um recurso avançado do C.
Fica a cargo do leitor deste post pesquisar para entender mais a fundo
como funciona a função qsort();, onde naturalmente o assunto ponteiro para função
é fundamental.
Más para não virmos a sentir dores de cabeça com isto vamos a um exemplo bem claro
de utilização da função qsort(); para ordenação de um vetor de struct.
Pergunta
roccoC/C++
Neste exemplo que trago agora vou mostrar como ordenar uma um vetor de estrutura
usando a função qsort(); da biblioteca padrão stdlib.h do C.
A função qsort(); é derivada de uma série de refinamento da famosa
e antiga função quicksort(); e na realidade passou a ser padrão há alguns anos
atrás, o que mais me impressiona é a facilidade de uso em imprementações para ordenação
em qualquer tipo de dados do C, e mesmo assim não é muito usada, nem sei porque
se evitam tanto esta função, talvez seja por não conhecê-la...
A função qsort(); utiliza alguns parâmetros veja na sua síntaxe abaixo:
void qsort (void* base, size_t num, size_t size,
int (*compar)(const void*,const void*));
onde base: é um Ponteiro genérico para o primeiro elementoo da matriz a ser
ordenado, a importância de ser ponteiro genérico se refere a poder usar a função
com qualquer tipo de dados do C.
num: Número de elementos na matriz apontada por base.
size_t: é um tipo integral sem sinal.
tamanho: Tamanho em bytes de cada elemento na matriz.
size_t é um tipo integral sem sinal.
compar: Ponteiro para uma função que compara dois elementos.
Essa função é chamada repetidamente por qsort para comparar dois elementos até
que todos tenham sido comparados e consequentemente ordenados.
Talvez entender esta função seja bem mais complicado do que saber usá-la
nos nossos programas, na verdade para entender a função qsort(); devemos primeiro
entender o comportamento de ponteiro para função que é um recurso avançado do C.
Fica a cargo do leitor deste post pesquisar para entender mais a fundo
como funciona a função qsort();, onde naturalmente o assunto ponteiro para função
é fundamental.
Más para não virmos a sentir dores de cabeça com isto vamos a um exemplo bem claro
de utilização da função qsort(); para ordenação de um vetor de struct.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o link do código do programa:
http://codigosfontes-ccplus-plus.blogspot.com.br/2016/05/qsort-ordenando-um-vetor-de-struct.html
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.