Cómo ordenar matrices con Qsort en C

Cómo ordenar matrices con Qsort en C
La clasificación es una operación fundamental en la programación de computadoras, e implica organizar una recopilación de datos en un orden específico. Una forma de ordenar una variedad de elementos en C es usar el Qsort () función, que es parte de la biblioteca estándar. Esta función toma una matriz, su tamaño y una función de comparación como argumentos y clasifica la matriz en orden ascendente por defecto.

Esta guía ilustra la clasificación de matrices utilizando el Qsort () función en C y también lo ayuda a comprenderlo mediante códigos de ejemplo C.

Qsort () en C

C Biblioteca estándar nos facilita con Qsort () función que simplemente se usa para clasificar las matrices. Es una función extremadamente optimizada y rápida que puede funcionar con cualquier matriz de tipo de datos.

Archivo de encabezado usando qsort () en c

El Qsort () El método se define dentro del stdlib.H Archivo de encabezado, que debe definirse antes de implementar Qsort () En un programa C.

#incluir

Declaración de Qsort ()

La declaración de Qsort () La función es la siguiente:

void QSort (void *base, number_of_elements, size_of_element, comparación_function)

Parámetros de la función Qsort ()

Los parámetros del Qsort () La función es:

base: Puntero al primer elemento de la matriz a ordenar.

Number_of_elements: Número de elementos en la matriz a ordenar.

size_of_element: Tamaño en bytes de cada elemento en la matriz.

comparación_function: Puntero a una función de comparación que define el orden de los elementos.

¿Cuál es la función de comparación en Qsort ()?

La función de comparación toma dos parámetros, ambos de tipo const void*, que apuntan a los elementos que se comparan. La función debe devolver un entero menos que, igual o superior a 0, dependiendo de si el primer elemento debe ordenarse antes, en la misma posición o después del segundo elemento, respectivamente.

Cómo funciona Qsort en C

El Qsort () La función funciona de la siguiente manera:

Nota: Aquí estamos considerando un int arr [] = 5, 2, 8, 3, 1, 9;

1: Inicialmente, la función QSORT se llamará con los siguientes parámetros:

Qsort (arr, 6, sizeof (int), comparación_function);

Donde arr es el puntero de la matriz, 6 es el número de elementos en la matriz, sizeOf (int) es el tamaño de cada elemento en la matriz, y comparación_function es la función que determina el orden en que se ordenan los elementos.

2: La función QSORT selecciona un elemento pivote. Digamos que selecciona 3 Como el pivote.

3: La función QSORT divide la matriz en dos sub-matrices: 2, 1 y 5, 8, 9. La primera subarray contiene elementos que son menores o iguales al pivote, y la segunda subarray contiene elementos que son mayores que el pivote.

4: La función QSORT se llama recursivamente en cada una de las sub-matrices.

5: La función QSORT selecciona los pivotes para cada una de las sub-matrices. Digamos que selecciona 1 y 8 como los pivotes.

6: La función QSORT divide cada sub-matra en dos sub-matrices más, y se llama recursivamente en cada una de estas sub-matrices.

7: La función Qsort combina las sub-matas ordenadas en una sola matriz ordenada: 1, 2 y 5, 8, 9 se convierten en 1, 2, 5, 8, 9.

8: Se devuelve toda la matriz ordenada.

Implementación de QSORT en la programación C

El siguiente código muestra la implementación de QSORT función en la programación 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), comparar);
printf ("Elementos ordenados de la matriz usando qsort () son:");
para (i = 0; i < num; i++)
printf ("%d", matriz [i]);
regresar 0;

En el código anterior, en primer lugar, se realiza una función de comparación con dos parámetros A1 y B1. Entonces la ejecución comienza desde main (). En general, inicializamos dos variables enteros como i = 0 y num = 6. Luego declaramos una matriz con seis elementos como 5, 2, 8, 3, 1, 9. Después de este Qsort () tienen tres parámetros de tipo de matriz, el parámetro NUM indica los elementos totales de una matriz, sizeof (int) se refiere al tamaño total de la matriz, y comparar se utiliza para comparar elementos de matriz uno por uno. Luego imprima la matriz ordenada usando printf () función en c.

Producción

Conclusión

QSORT es una función poderosa en la programación C para clasificar matrices de cualquier tipo. Utiliza un algoritmo QuickSort para ordenar los elementos en orden ascendente o descendente en función de una función de comparación. La guía anterior le muestra una manera fácil de implementar QSORT en la programación C con un funcionamiento paso a paso de QSORT algoritmo.