Sort de montón C ++

Sort de montón C ++

Como sabemos, el lenguaje C ++ tiene muchos algoritmos de clasificación para clasificar estructuras similares a la matriz. Una de esas técnicas de clasificación es el tipo de montón. Es bastante popular entre los desarrolladores de C ++ porque se considera el más eficiente cuando se trata de su trabajo. Es un poco diferente de otras técnicas de clasificación porque requiere la información de los árboles de estructura de datos junto con el concepto de matrices. Si ha escuchado y aprendido sobre árboles binarios, entonces aprender el tipo de montón no será más un problema para usted.

Dentro del tipo de montón, se pueden generar dos tipos de montones, yo.mi., Min-Heap y Max-Heap. El Max-Heap clasificará el árbol binario en orden descendente, mientras que el Min-Heap ordenará el árbol binario en orden ascendente. En otras palabras, el montón será "máximo" cuando el nodo principal de un niño sea mayor en valor y viceversa. Entonces, hemos decidido escribir este artículo para todos esos usuarios ingenuos de C ++ que no tienen conocimiento previo sobre la clasificación, especialmente el tipo de montón.

Comencemos nuestro tutorial de hoy con el Ubuntu 20.04 Inicie sesión para obtener acceso al sistema Linux. Después del inicio de sesión, use el acceso directo "Ctrl+Alt+T" o el área de actividad para abrir su aplicación de consola llamada "Terminal."Tenemos que utilizar la consola para hacer un archivo para la implementación. El comando para la creación es una simple instrucción de "toque" de una palabra que sigue el nuevo nombre para que se cree un archivo. Hemos estado nombrando nuestro archivo C ++ como "montón.CC ". Después de la creación de archivos, debe comenzar a implementar los códigos en él. Para eso, primero debes abrirlo a través de algunos editores de Linux. Hay tres editores incorporados de Linux que se pueden usar para este propósito, yo.mi., nano, vim y texto. Estamos utilizando el editor "GNU Nano".

Ejemplo # 01:

Explicaremos un programa simple y bastante claro para el tipo de montón para que nuestros usuarios puedan entenderlo y aprenderlo bien. Use el espacio de nombres de C ++ y la biblioteca para la entrada de entrada al inicio de este código. La función hedapify () se llamará por una función "sort ()" para ambos bucles. El primer bucle "para" llamará a la matriz "a", n = 6, y root = 2,1,0 (con respecto a cada iteración) para construir un montón reducido.

Usando el valor raíz cada vez, obtendremos el valor variable "más grande" es 2,1,0. Luego, calcularemos los nodos "L" y derecho "R" izquierdo del árbol usando el valor de "raíz". Si el nodo izquierdo es mayor que "root", el primer "si" asignará "l" al más grande. Si el nodo derecho es mayor que la raíz, el segundo "si" asignará "r" a la más grande. Si "más grande" no es igual al valor de "raíz", el tercer "si" intercambiará el valor variable "más grande" con "root" y llame a la función HeApify () dentro de él, i I.mi., llamada recursiva. El proceso completo sobre explicado anteriormente también se utilizará para el montón máximo cuando el segundo bucle "para" se itere dentro de la función de clasificación.

Se llamará a la función "sort ()" shot-below para ordenar los valores de la matriz "a" en orden ascendente. El primer bucle "para" está aquí; Construye un montón, o puede decir que Reorange Array. Para esto, el valor de "I" se calculará por "N/2-1" y disminuirá cada vez después de la llamada de la función Heapify (). Si tiene un total de 6 valores, se convertirá en 2. Se realizarán un total de 3 iteraciones, y la función de Heapify se llamará 3 veces. El siguiente bucle "para" está aquí para mover la raíz actual al final de una matriz y llamar a la función de Heepify 6 veces. La función de intercambio llevará el valor al índice de iteración actual "a [i]" de una matriz con el primer valor de índice "a [0]" de una matriz. Se llamará a la función Heap () para generar el montón máximo en el montón reducido ya generado, i.mi., "2,1,0" al principio "para" bucle.

Aquí viene nuestra función "Display ()" para este programa que ha estado tomando una matriz y el número de elementos del código de controlador principal (). La función "Display ()" se llamará dos veces, yo.mi., Antes de ordenar para mostrar la matriz aleatoria y después de clasificar para mostrar la matriz ordenada. Se inicia con el bucle "para" que usará la variable "n" para el último número de iteración y se inicia desde el índice 0 de una matriz. El objeto C ++ "Cout" se usa para mostrar cada valor de la matriz "A" en cada iteración mientras continúa el bucle. Después de todo, los valores para la matriz "A" se mostrarán en el caparazón uno tras otro, separados entre sí por un espacio. Por fin, el descanso de la línea se insertará utilizando el objeto "Cout" una vez más.

Este programa comenzará desde la función Main () ya que C ++ siempre tiende a ejecutar desde él. Al comienzo de nuestra función principal (), la matriz de enteros "A" se inicializó con un total de 6 valores. Todos los valores se almacenan en un orden aleatorio dentro de la matriz A. Hemos tomado el tamaño de la matriz "A" y el tamaño del primer valor de índice "0" de la matriz A para calcular el número total de elementos en una matriz. Ese valor calculado se almacenará en una nueva variable "n" de tipo entero. La salida estándar C ++ se puede mostrar con la ayuda de un objeto "Cout."

Por lo tanto, estamos utilizando el mismo objeto "Cout" para mostrar el simple mensaje "matriz original" en el shell para que nuestros usuarios sepan que se mostrará la matriz original no organizada. Ahora, tenemos una función de "pantalla" definida por el usuario en este programa que se llamará aquí para mostrar la matriz original "A" en el shell. Lo hemos pasado nuestra matriz original y la variable "n" en los parámetros. Después de mostrar la matriz original, estamos utilizando la función sort () aquí para organizar y reorganizar nuestra matriz original en orden ascendente utilizando el sort de montón.

La matriz original y la variable "n" se le pasan en los parámetros. La siguiente declaración de "cout" se usa para mostrar el mensaje "matriz ordenada" después del uso de una función de "ordenar" para ordenar la matriz "a."La llamada de función a la función" Pantalla "se usa nuevamente. Esto es para mostrar la matriz ordenada en la carcasa.

Después de que se complete el programa, tenemos que hacer que sea libre de errores utilizando el compilador "G ++" en la consola. El nombre del archivo se usará con la instrucción del compilador "G ++". El código se especificará como sin error si no arroja salida. Después de esto, el "./a.El comando Out ”se puede desechar para ejecutar el archivo de código sin error. La matriz original y la matriz ordenada se han mostrado.

Conclusión:

Esto se trata del funcionamiento de un tipo de montón y una forma de usar la clasificación de Heap en el código del programa C ++ para realizar la clasificación. Hemos elaborado el concepto de montón máximo y mín. Hemos explicado el tipo de montón de la manera más simple posible para nuestros nuevos usuarios de C ++ que están utilizando el sistema Linux.