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 organizar uma coleção de dados em um pedido específico. Uma maneira de classificar uma variedade de elementos em C é usar o Qsort () função, que faz parte da biblioteca padrão. Esta função leva uma matriz, seu tamanho e uma função de comparação como argumentos e classifica a matriz em ordem ascendente por padrão.

Esta diretriz ilustra a classificação de matrizes usando o Qsort () função em c e também ajuda você a entendê -lo por c códigos de exemplo.

qsort () em c

C biblioteca padrão nos facilita com Qsort () função que é simplesmente usada para classificar as matrizes. É uma função extremamente otimizada e rápida que pode operar com qualquer matriz de tipo de dados.

Arquivo de cabeçalho usando QSORT () em C

O Qsort () o método é definido dentro do stdlib.h arquivo de cabeçalho, que deve ser definido antes de implementar Qsort () em um programa C.

#incluir

Declaração de Qsort ()

A declaração de Qsort () A função é a seguinte:

Void Qsort (void *base, número_of_elements, size_of_element, comparação_function)

Parâmetros da função qsort ()

Os parâmetros do Qsort () função são:

base: Ponteiro para o primeiro elemento da matriz a ser classificado.

número_of_elements: Número de elementos na matriz a ser classificada.

size_of_element: Tamanho em bytes de cada elemento na matriz.

comparação_function: Ponteiro para uma função de comparação que define a ordem dos elementos.

O que é a função de comparação no Qsort ()

A função de comparação leva dois parâmetros, ambos do tipo const void*, que apontam para os elementos que estão sendo comparados. A função deve retornar um número inteiro menor que, igual ou maior que 0, dependendo se o primeiro elemento deve ser classificado antes, na mesma posição ou após o segundo elemento, respectivamente.

Como o QSORT funciona em C

O Qsort () A 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, sizeof (int), comparação_function);

Onde o ARR é o ponteiro para a matriz, 6 é o número de elementos na matriz, sizeof (int) é o tamanho de cada elemento na matriz, e comparação_function é a função que determina a ordem em que os elementos são classificados.

2: A função QSORT seleciona um elemento pivô. Digamos que ele selecione 3 como o pivô.

3: A função QSORT participa a matriz em dois sub-maiores: 2, 1 e 5, 8, 9. O primeiro sub-matriz contém elementos que são menores ou iguais ao pivô, e o segundo sub-matriz contém elementos maiores que o pivô.

4: A função QSORT se chama recursivamente em cada um dos sub-maiores.

5: A função QSORT seleciona pivôs para cada um dos sub-maiores. Digamos que ele selecione 1 e 8 como os pivôs.

6: A função QSORT divide cada sub-matriz em mais dois sub-maiores e se chama recursivamente em cada um desses sub-maiores.

7: A função QSORT combina os sub-marcos classificados de volta em uma única matriz classificada: 1, 2 e 5, 8, 9 se tornam 1, 2, 5, 8, 9.

8: Toda a matriz classificada é devolvida.

Implementação do QSORT na programação C

O código a seguir mostra a implementação de Qsort função na programação C.

#incluir
#incluir
int compare (const void * a1, const void * b1)

return ( *(int *) a1 - *(int *) b1);

int main ()

int i = 0, num = 6;
int array [] = 5, 2, 8, 3, 1, 9;
qsort (matriz, num, sizeof (int), compare);
printf ("Elementos classificados da matriz usando QSORT () são:");
para (i = 0; i < num; i++)
printf ("%d", matriz [i]);
retornar 0;

No código acima, primeiro uma função de comparação é feita com dois parâmetros A1 e B1. Então a execução começa em Main (). Em geral, inicializamos duas variáveis ​​inteiras como i = 0 e num = 6. Então declaramos uma matriz com seis elementos como 5, 2, 8, 3, 1, 9. Depois disto Qsort () ter três parâmetros do tipo de matriz, o parâmetro num diz o total de elementos de uma matriz, sizeof (int) refere -se ao tamanho total da matriz e a comparação é usada para comparar elementos de matriz 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 classificar matrizes de qualquer tipo. Ele usa um algoritmo Quicksort para classificar os elementos em ordem ascendente ou descendente 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 funcionamento passo a passo de Qsort algoritmo.