Clasificación rápida en c ++

Clasificación rápida en c ++

Organizar cosas en secuencia es una tarea que realizamos en la vida diaria, ya sea que esté organizada en orden ascendente o orden descendente. El proceso de organizar las cosas en una secuencia adecuada se llama clasificación. El ascenso está aumentando el orden y descender es el orden disminuido. En la programación, también realizamos la clasificación utilizando diferentes algoritmos. Pero un algoritmo proporciona la clasificación más rápida, que es "clasificación rápida". Este algoritmo de clasificación clasifica la matriz más rápido que los otros algoritmos. Funciona en la regla de división y conquista, primero establece un punto de pivote y divide la matriz en dos sub-matrices. Luego, establezca un pivote para las subrayas y el proceso continúa hasta que llegamos al final y la matriz requerida se ordene. Este artículo explica un funcionamiento en profundidad de un tipo rápido en C ++ con un ejemplo de codificación práctica en orden ascendente.

Cómo seleccionar un pivote

Antes de pasar a más detalles, es importante aprender cómo podemos seleccionar un pivote para el algoritmo de clasificación rápida.

    • Primer elemento
    • Último elemento
    • Elemento mediano
    • Elemento aleatorio

No hay restricción para seleccionar un pivote. Principalmente, establecemos el último valor de la matriz como punto de pivote.

Algoritmos:

La clasificación rápida se realiza con dos algoritmos: uno es dividir la matriz de acuerdo con el punto de pivote y el otro es para clasificar la matriz.

Para la partición:

    • Tomar dos variables como más bajas y más altas.
    • Almacene el índice inicial de la matriz en la más baja y luego almacene el último índice en el más alto.
    • Defina otra variable y la inicializa con la variable más baja como "ITER".
    • Seleccione el último miembro de la matriz para actuar como el pivote.
    • Pasar por la matriz. Después de eso, coincida con cada elemento con el valor de pivote.
    • Si el elemento de matriz es menor que el pivote, incrementa el "iter" y cambia sus posiciones.
    • Incrementa el "i" por 1 y repite el proceso hasta que se alcance el final de la matriz. Terminar el bucle allí y devolver el ITER-1.

El valor devuelto nos da la posición del índice de pivote. Antes del pivote, existen los elementos que son más pequeños que el valor de pivote. Después del pivote, existen los elementos que son mayores que el valor de los pivote.

Para clasificar:

Ahora, pasa a la clasificación. Use las siguientes instrucciones para ordenar una matriz:

    • Elija el último artículo de la matriz para actuar como el pivote.
    • El algoritmo de partición del índice devuelto es el índice correcto de un pivote.
    • El método QuickSort se llama en los subarrías izquierdo y derecho repetidamente.

Con la ayuda de estos dos algoritmos, podemos realizar el tipo rápido en cualquier matriz. Un ejemplo del método de clasificación rápida se elucide en lo siguiente:

Clasificación rápida en orden ascendente

Expliquemos el método de "clasificación rápida" para ordenar una matriz entera en orden creciente.

Código:

#incluir
usando el espacio de nombres STD;
void swap (int array_0 [], int posicion_1, int posicion_2)
int temp_0;
temp_0 = array_0 [posición_1];
array_0 [posicion_1] = array_0 [posición_2];
Array_0 [Position_2] = TEMP_0;
Int Partition (int Array_0 [], int low, int high, int pivot)
int i_0 = Low;
int j_0 = bajo;
mientras (i_0 <= high) if(array_0[i_0] > pivot) i_0 ++;
else swap (array_0, i_0, j_0); i_0 ++; j_0 ++;
return j_0-1;

void Quicksort_0 (int Array_0 [], int Low, int High)
Yo fluyo < high)
int pivot = array_0 [alto];
int posición = particion (array_0, bajo, alto, pivote);
Quicksort_0 (Array_0, bajo, posición-1);
Quicksort_0 (Array_0, posición+1, alto);
int main ()

int n [4] = 12,3,8,6;
Quicksort_0 (n, 0, 3);
cout<<"The sorted array is: ";
para (int i = 0; i < 4 ; i++) cout<< n[i]<<"\t";


Inicie el código importando la biblioteca e incluya el espacio de nombres estándar. Después de eso, defina un método llamado "intercambio" del tipo de retorno vacío. En esta función, pase tres parámetros que tienen un tipo entero. Los dos argumentos, "Position_1" y "Position_2", se utilizan para posiciones. El tercero, "temp_0", es una matriz. El método intercambia las posiciones de los elementos de matriz. Se declara que la variable llamada "Temp_0" guardará temporalmente el valor. Además, inicialice este "temp_0" con la primera posición de la matriz. Luego, asigne la segunda posición de la matriz a la primera posición de una matriz "Position_1". Y asigne la temperatura a la segunda posición de la matriz, que es "Position_2". Esto funciona como A = B; b = c; C = A. Este método solo realiza el intercambio.

Además de esto, defina otra función para la partición. Este método divide la matriz en dos partes y divide aún más las sub-matrices en sub-matrices. Esta función es un método de retorno y devuelve un valor entero que contiene el índice correcto del pivote. Este método de partición () tiene cuatro argumentos de tipo entero. Primero es una matriz de "Array_0", el segundo es "bajo" que almacena el índice inicial de la matriz, el tercero es "alto" que contiene el último índice de la matriz, y el cuarto es "pivote". Dentro de este método, inicialice dos variables: "I_0" y "J_0" - con "bajo". Estas dos variables tienen un tipo de datos "int". Como sabemos, "bajo" contiene el índice inicial de la matriz. En la siguiente línea, use el bucle "while" para iterar en la matriz. Primero, establezca la condición de "'while” como i_0 <= high. Iterate until we reach the last index of the array. Inside the “while” loop, employ the “if” decision-making statement to check whether the array elements are greater than the pivot or not. If this condition is fulfilled, the body of “if” executes which increments the iterator. Otherwise, the body of “else” is run. In the body of “else”, we callthe swap() method that swaps the array values until they are in ascending order. Outside the “while”, return the “j_0-1” to the function. Because that is incremented in the “else” part.

Definir otro método Quicksort () de retorno de void tipo para realizar la clasificación rápida. Tres argumentos: "Array_0", "bajo" y "alto", que tienen datos de tipo entero a esta función. Además, establezca la condición "si". Si "bajo" es menor que el "alto", inicialice el "pivote" con el último índice de la matriz "alto". Para la variable "posición", llame al método de partición (). Luego, invoca recursivamente la función QuickSort () en los sub-matrices derecho e izquierdo.

En la última parte del código, emplee el método principal (). A continuación, inicialice una matriz de tipo "INT" y llame al método QuickSort_0 (). Esta función contiene tres argumentos. Realiza un tipo rápido en la matriz especificada y clasifica esta matriz. Ingrese el "Cout<<” command to print the “The sorted array is:” line. To display the sorted array, use a “for” loop and iterate until the end of the array is reached.

Producción:

La matriz ordenada es: 3 6 8 12

Conclusión

El tipo rápido en C ++ se discute en esta guía. En la programación, es necesario organizar las matrices en orden ascendente o descendente. Hay múltiples algoritmos de clasificación como la clasificación de burbujas, la clasificación de fusión, etc. Quick Sort es uno de ellos, pero como dice el nombre, clasifica la matriz más rápidamente que otros. Este artículo explica qué es un pivote, qué elemento de matriz puede ser el pivote, qué algoritmos se utilizan para una clasificación rápida y cómo funcionan. Este artículo concluye con el código de C ++ donde implementamos el tipo rápido.