Como classificar matrizes com qsort () em C

Como Classificar Matrizes Com Qsort Em C



A classificação é uma operação fundamental na programação de computadores e envolve a organização de uma coleção de dados em uma ordem específica. Uma maneira de classificar uma matriz de elementos em C é usar o método qsort() função, que faz parte da biblioteca padrão. Essa função usa uma matriz, seu tamanho e uma função de comparação como argumentos e classifica a matriz em ordem crescente por padrão.

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.