Sort de cubo C ++

Sort de cubo C ++

La clasificación es un método por el cual pedimos los elementos en una secuencia. La clasificación de bucket es uno de los algoritmos de clasificación, pero este algoritmo es un poco diferente de los otros algoritmos. Un balde, como su nombre lo indica, contiene algo en un espacio separado como un contenedor. Este algoritmo coloca los elementos en el cubo de acuerdo con la condición. Los elementos se dividen en diferentes cubos, y la clasificación se realiza en cada cubo. Podemos decidir qué algoritmo se usa para ordenar los cubos. Los otros nombres para la clasificación de bucket son el tipo de contenedor y la clasificación de Radix. La agrupación de elementos que se almacenarán en cubos se realiza de manera uniforme. El tipo de bucket es el algoritmo que es bueno con matrices pequeñas. Pero cuando se trata de clasificar las matrices más grandes, este algoritmo no se prefiere porque la complejidad aumenta y el rendimiento disminuye. Este algoritmo se aplica principalmente en los valores del punto flotante donde necesitamos agrupar uniformemente los elementos de la matriz.

Ventajas:

Usar el tipo de cubo en la programación tiene algunos beneficios:

  • Es rápido debido a la distribución uniforme.
  • El número de comparaciones es menor que en otras técnicas de clasificación.

Se prefiere el tipo de cubo cuando tenemos que distribuir los datos y cuando se trata de valores de punto flotante.

Enfoque de dispersión y recolección

La clasificación del cubo funciona en el enfoque de dispersión y recolección. Primero dispersa los elementos en el cubo de manera uniforme. Una vez que se clasifican en el cubo, se unen en un lugar y clasifican la matriz. Esta técnica nos ahorra de la comparación de cada elemento de matriz entre sí que aumenta la complejidad y hace que el proceso de compilación sea lento.

La clasificación del cubo clasifica las matrices dividiendo los elementos de la matriz en cubos. Cada cubo se almacena en una ubicación separada. El proceso de almacenamiento se puede realizar utilizando diferentes técnicas o algoritmos o aplicando recursivamente el algoritmo de clasificación de bucket.

Ejemplo:

Ahora, explicamos el funcionamiento de la clasificación de cubos con la ayuda de un ejemplo. Se emplean diferentes métodos para la clasificación y distribución de las matrices.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
nulo bucketSort (flotante array_0 [], int n)
vector b [n];
para (int i = 0; i< n; i++)
int bi_0 = n * array_0 [i];
B [Bi_0].push_back (array_0 [i]);

para (int i = 0; i< n; i++)
ordenar (b [i].begin (), b [i].fin());
int index = 0;
para (int i = 0; i< n; i++)
para (int j = 0; j < b[i].size(); j++)
array_0 [index ++] = b [i] [j];

int main ()
float arr [] = 0.7, 0.5, 0.6, 0.65, 0.4;
int n = sizeof (arr) / sizeof (arr [0]);
Bucketsort (arr, n);
cout<< "Sorted array is \n";
para (int i = 0; i< n; i++)
cout<regresar 0;

En primer lugar, incluyen las tres bibliotecas importantes: y . La biblioteca contiene todos los métodos para clasificar y buscar. Dado que ordenaremos la matriz de valores de puntos flotantes, es obligatorio incluir esta biblioteca en el código. Después de esto, incluya la biblioteca que contiene todos los métodos incorporados que necesitamos para ingresar y generar los datos. La tercera y última biblioteca es . El vector es como una matriz pero contiene un tamaño variable. Los vectores pueden cambiar el tamaño de una matriz en tiempo de ejecución; esa es su especialidad. Dado que usamos los vectores en nuestro código, es importante importar una biblioteca que incluya el vector en él.

Después de importar estas bibliotecas, use el "STD del espacio de nombres". Además, defina un método llamado "bucketSort" del tipo de retorno vacío. Pasar dos parámetros en él. El primer parámetro es la matriz de tipo flotante "Array_0" que se clasifica utilizando la clasificación de bucket. El segundo parámetro es una variable de tipo entero "n". Luego, defina una matriz vectorial del tipo de datos de punto flotante. La matriz es "b" de tamaño "n". Se utiliza una matriz de tipo vector porque se desconoce el tamaño de la matriz. Ahora, agregue los elementos en diferentes cubos usando el bucle "para". Declare el iterador "I" y luego configure la condición en el bucle hasta que el iterador alcance el número de elementos en la matriz. El atributo "n" muestra el tamaño de la matriz que se desconoce. Observamos cómo obtener el tamaño de una matriz en el método principal (). Incrementa el iterador "I". Defina una variable en el bucle "para" cuyo tamaño "n" se multiplica por los valores de la matriz que se almacenan en el iterador.

En la matriz vectorial, emplee la función push_back () para presionar ese elemento de matriz. Después de empujar la matriz en cubos, ordene estos cubos usando otro bucle "para". Inicialice el iterador del bucle e itera hasta que alcance el tamaño y sigue incrementando el bucle. Ordene la matriz en el cuerpo de "para" llamando al método sort () de la biblioteca de algoritmo. Pasar dos parámetros dentro de esta función. El primer argumento muestra el índice inicial de la matriz y el segundo argumento muestra el índice final de la matriz. La función begin () inicia la función de clasificación y final () se detiene en el último índice. Declarar una variable fuera del cuerpo de "para" para obtener el índice. Use el bucle anidado "para" para combinar los elementos de la matriz después de clasificar en cubos separados.

Además, llame al método main (). Aquí, declara una matriz de puntos flotantes "ARR" e inicializa. Luego, defina un entero "n" para obtener los elementos de la matriz. La función sizeOf (arr) obtiene el tamaño de una matriz en bytes. Multiplica el tamaño con 10 y el método sizeOf (arr [0]) obtiene el tamaño de un solo elemento. Al dividir ambos, podemos adquirir los componentes totales de la matriz. Ahora, invoca el método de bucketsort (). Esta función clasifica la matriz aplicando el algoritmo de clasificación de bucket. Representar un mensaje de "matriz ordenada" en la consola usando el comando "cout". Para mostrar la matriz ordenada, use el bucle "para" y establezca la condición en el número de elementos de la matriz. Use "Cout" en el cuerpo de "para" para mostrar la matriz actualizada.

Conclusión

Discutimos el trabajo e implementación del tipo de cubo en c++. Como el nombre se explica por sí mismo, divide la matriz y los almacena en el cubo. Después de clasificar la matriz, todos los cubos se combinan en una secuencia. Este tipo de cubo se prefiere cuando tratamos los valores de los puntos flotantes porque divide los cubos en función de diferentes condiciones y se utiliza para distribuir los datos de manera uniforme. El artículo contiene toda la información que debe saber antes de implementar el tipo de depósito. Algunas técnicas y algoritmos de clasificación diferentes se utilizan para ordenar la matriz; Todos los métodos tienen pros y contras. Lo que tiene este método es el punto más que es rápido y clasifica la matriz con una comparación mínima. Pero cuando tenemos una matriz grande, el tipo de cubo no es una buena opción. El artículo resume aquí con una breve descripción del tipo de cubo.