Shell sort c ++

Shell sort c ++
El lenguaje C ++ se le ocurrió muchas técnicas de clasificación que se utilizarán en el programa para clasificar una variedad de objetos. Una de esas técnicas de clasificación es el tipo de shell, que es principalmente otra forma de inserción. Dentro de la inserción, tendemos a mover un valor único a su siguiente posición de índice. El movimiento de un valor al siguiente índice consecutivo puede no dar el resultado requerido si queremos colocarlo al final y puede tomar más tiempo mientras se clasifica. Al mismo tiempo, el tipo de shell puede mover un valor lejos de su lugar original y lleva menos tiempo hacerlo. Por lo tanto, hemos decidido demostrar el funcionamiento de la técnica de clasificación de shell en la programación de C ++. Comencemos con la creación de archivos C ++ y su apertura a través de las instrucciones demostradas a continuación en la consola terminal del Ubuntu 20.04 sistema.

Ejemplo 01:

A partir del primer ejemplo en un nuevo archivo, primero tenemos que utilizar las bibliotecas requeridas. Sin el encabezado "iOStream", un usuario no puede utilizar ninguna secuencia de entrada y salida en el código. Un programador C ++ siempre utilizará el "espacio de nombres" y bibliotecas como "IOSTREAM", "STDLIB" y "STDIO.h ", etc. Aquí viene el método swap () que será llamado por la función "ordenar". La función de clasificación pasará dos valores en diferentes ubicaciones al método "swap ()" y usará la variable "temperia" para intercambiarlos entre sí.

La función show () tomará una matriz y su tamaño que se muestra en sus parámetros desde el método main (). Utilizará el bucle "para" para iterar toda la matriz hasta su tamaño "S."Use el objeto" Cout "para mostrar cada valor utilizando el índice" I "separado de otros valores por un espacio. Después de que se muestren todos los valores, el Cout se usará nuevamente para agregar el descanso de la línea.

Después de que se haya mostrado la matriz sin clasificar, está girando para que la función de "ordenar" funcione en él. La función de clasificación tomará una matriz y su tamaño para usar. Inicializó tres variables enteros G, J, K. La variable "G" se usará en el primer bucle "para" externo para reducir la brecha entre los valores. Se iniciará desde el medio de la matriz según "g = n/2". En cada iteración, la brecha volverá nuevamente por "g/2", i.mi., se creará otra mitad. Al hacerlo, la matriz se dividirá en varias partes, y el tamaño del espacio será menor. El siguiente bucle "j" comenzará desde el valor de la brecha actual, yo.mi., "G", que será el punto medio de una matriz en ese momento. Y continuará hasta el último índice de una matriz. En cada iteración, "J" se incrementará. El "K" para bucle comenzará desde "J-G" y continuará hasta "K> =."Si el valor en" k+g "es mayor o igual al valor en" k "de una matriz, romperá el bucle. De lo contrario, los valores serán intercambiados por la llamada de función "swap". Lo más probable es que el valor en "K+G" será una posición inicial, y "K" estará en la última posición de una matriz.

Cada programa inicia su ejecución desde el código de función del controlador principal () mientras se ejecutan. Nuestra función Main () se ha iniciado con una inicialización de la matriz entera "A". Esta matriz "A" estará en un orden aleatorio, yo.mi., desordenado. El objeto "cout" es la instrucción de salida estándar C ++ utilizada para mostrar algún texto o valor variable en el shell. Esta vez, lo hemos estado usando para que los usuarios sepan que la matriz antes de la clasificación se mostrará en la pantalla. La función "show ()" se llamará al pasar la matriz original no organizada "A" y el número de valores que desea mostrar antes de clasificar. Aunque hay un total de 10 elementos en la matriz, hemos estado clasificando y mostrando solo 9. El método de "ordenar" se llama al pasar la matriz y el número de elementos que se clasificarán aquí. Después de que se haya realizado la clasificación con el tipo de shell, el método "show" se utilizará nuevamente para mostrar el total de los primeros 9 elementos ordenados en el shell.

La cáscara.El archivo CC se compiló y dio como resultado la salida a continuación después de la ejecución. Los 9 elementos no organizados para la matriz se muestran primero. En la última línea, los mismos 9 elementos de una matriz se muestran en orden ascendente para ordenar.

Ejemplo 02:

Aquí viene un nuevo ejemplo de uso de shell sort en nuestro programa. Hemos estado usando el mismo caparazón.Archivo CC e inicializó nuestro código con el mismo encabezado y espacio de nombres. Este programa comienza desde la función Main (). El método main () tiene una matriz entera a de 5 valores ya inicializados. La variable "n" se inicializa utilizando la función "sizeof ()" para c++. Esto se usa para calcular los números totales en una matriz "A" y guardar ese valor para la variable "N."Podemos ver que la matriz tiene solo 5 elementos, por lo que puede omitir el uso de calcular varios elementos y usar" 5 "en cualquier parte del código.

Llega el mensaje para que los usuarios estén alertas porque se mostrará la matriz sin clasificar, yo.mi., Vía "Cout."La función" Display () "se llama aquí para mostrar la matriz completa sin clasificarlo pasando una matriz y el número de elementos en ella. La función display () usará el bucle "para" para iterar la matriz pasada hasta su último índice y mostrar los valores, ya que está utilizando el objeto "cout" e índice "i."Aquí viene el método" sort () ". La llamada de función a este método está tomando la matriz y su número total de elementos como entrada. El bucle "para" externo está aquí para disminuir la brecha entre los valores/índices dividiendo el número total de elementos en 2.

El valor de "g" debe ser mayor que 0, y se disminuirá nuevamente en 2 después de cada iteración. Esto disminuirá la brecha en cada iteración. El bucle interno "I" tomará el valor de Gap "G" como punto de partida y continuará hasta que "n."Dentro de este bucle, el valor de" i "se asignará a la variable temporal" temp ". El bucle "J" más interior está aquí. Comienza desde el punto "i" hasta que el valor de g se vuelve igual o mayor que "g", y también, el valor en el índice "j-g" de la matriz se vuelve mayor que la variable "temperada". La "j" será disminuida por "g" cada vez. Este bucle continuará intercambiando el valor en el índice "J-G" con el valor en "J."El valor de" temp "se asignará al índice" j "de la matriz, yo.mi., intercambio donde sea necesario. Después de volver a la función main (), se volverá a llamar al método Display () para mostrar la matriz ordenada.

En la compilación y la ejecución del caparazón.Archivo CC, resulta que la matriz no organizada se ha ordenado ahora.

Conclusión:

En nuestro párrafo de introducción, hemos ilustrado el objetivo principal de usar el tipo de shell en lugar de la inserción en c++. Para demostrar cómo funciona, se han construido dos ejemplos simples pero diversos, que se pueden cambiar de acuerdo con las preferencias del usuario. El primer ejemplo utiliza métodos definidos por el usuario para intercambiar y clasificar elementos, pero el segundo utiliza una sola función para realizar ambos. Ambos escenarios de clasificación de shell pueden usarse para cualquier proyecto relacionado con la tecnología.