Esta diretriz ilustra a classificação de arrays usando o qsort() função em C e também ajuda você a entendê-lo por códigos de exemplo C.
qsort() em C
A biblioteca padrão C nos facilita com qsort() função que é simplesmente usada para classificar matrizes. É uma função extremamente otimizada e rápida que pode operar com qualquer array de tipo de dados.
Arquivo de cabeçalho usando qsort () em C
O qsort() método é definido dentro do stdlib.h arquivo de cabeçalho, que deve ser definido antes de implementar qsort() em um programa C.
#include
Declaração de qsort()
A declaração de qsort() função é a seguinte:
vazio qsort ( vazio * base , number_of_elements , size_of_element , função_comparação )
Parâmetros da Função qsort()
Os parâmetros do qsort() função são:
base: Ponteiro para o primeiro elemento do array a ser classificado.
número_de_elementos: Número de elementos na matriz a serem classificados.
size_of_element: Tamanho em bytes de cada elemento na matriz.
função_comparação: Ponteiro para uma função de comparação que define a ordem dos elementos.
O que é função de comparação em qsort ()
A função de comparação recebe dois parâmetros, ambos do tipo const void*, que apontam para os elementos que estão sendo comparados. A função deve retornar um inteiro menor, igual ou maior que 0, dependendo se o primeiro elemento deve ser classificado antes, na mesma posição ou depois do segundo elemento, respectivamente.
Como o qsort funciona em C
O qsort() função funciona da seguinte maneira:
Observação: Aqui estamos considerando um int arr[] = {5, 2, 8, 3, 1, 9};
1: Inicialmente, a função qsort será chamada com os seguintes parâmetros:
qsort ( arr , 6 , tamanho de ( int ) , função_comparação ) ;onde arr é o ponteiro para a matriz, 6 é o número de elementos na matriz, sizeof(int) é o tamanho de cada elemento na matriz e a função_comparação é a função que determina a ordem na qual os elementos são classificados.
2: A função qsort seleciona um elemento pivô. Digamos que ele selecione 3 como pivô.
3: A função qsort particiona o array em dois sub-arrays: {2, 1} e {5, 8, 9}. A primeira submatriz contém elementos que são menores ou iguais ao pivô, e a segunda submatriz contém elementos maiores que o pivô.
4: A função qsort chama a si mesma recursivamente em cada um dos sub-arrays.
5: A função qsort seleciona pivôs para cada uma das submatrizes. Digamos que ele selecione 1 e 8 como os pivôs.
6: A função qsort particiona cada subarray em mais dois subarrays e chama a si mesma recursivamente em cada um desses subarrays.
7: A função qsort combina os subarrays classificados de volta em um único array classificado: {1, 2} e {5, 8, 9} se tornam {1, 2, 5, 8, 9}.
8: Todo o array classificado é retornado.
Implementação de qsort em Programação C
O código a seguir mostra a implementação de qsort função em programação C.
#include#include
int comparar ( const vazio * a1 , const vazio * b1 )
{
retornar ( * ( int * ) a1 - * ( int * ) b1 ) ;
}
int principal ( )
{
int eu = 0 , num = 6 ;
int variedade [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;
qsort ( variedade , num , tamanho de ( int ) , comparar ) ;
printf ( 'Os elementos ordenados do array usando qsort() são: ' ) ;
para ( eu = 0 ; eu < num ; eu ++ ) {
printf ( '%d' , variedade [ eu ] ) ; }
retornar 0 ;
}
No código acima, primeiramente uma função de comparação é feita com dois parâmetros a1 e b1 . Em seguida, a execução começa em main (). No principal, inicializamos duas variáveis inteiras como i=0 e num=6. Em seguida, declaramos um array com seis elementos como {5, 2, 8, 3, 1, 9} . Depois disto qsort() tem três parâmetros do tipo array, o parâmetro num informa o total de elementos de um array, sizeof(int) refere-se ao tamanho total do array e compare é usado para comparar os elementos do array um por um. Em seguida, imprima a matriz classificada usando printf() função em C.
Saída
Conclusão
qsort é uma função poderosa na programação C para ordenar arrays de qualquer tipo. Ele usa um algoritmo de classificação rápida para classificar os elementos em ordem crescente ou decrescente com base em uma função de comparação. O guia acima mostra uma maneira fácil de implementar o qsort na programação C com um trabalho passo a passo de qsort algoritmo.