¿Cómo implementar mejor el programa Radix Sort en C?



Este artículo le presentará el programa Radix Sort en C y seguirá con una demostración programática para una mejor comprensión.

Este artículo le presentará Radix Sort y le dirá cómo implementar Radix Sort en C. Los siguientes consejos se tratarán en este artículo,

Así que comencemos entonces





En palabras simples, ordenar significa organizar los elementos dados en un orden sistemático. La clasificación se realiza en la mayoría de los algoritmos porque facilita la búsqueda, lo que finalmente hace que el algoritmo sea eficiente. En este blog entenderemos uno de los algoritmos soring comúnmente utilizados, es decir, el tipo Radix.

La ordenación por radix es un algoritmo de ordenación de enteros no comparativo. Realiza una clasificación dígito a dígito comenzando desde el dígito menos significativo (es decir, el dígito presente a la derecha) hasta el dígito más significativo (es decir, el dígito presente a la izquierda). La ordenación por radix utiliza la ordenación por conteo como una subrutina para ordenar.
El límite inferior para el algoritmo de clasificación basado en comparación (como clasificación de montón, clasificación rápida, clasificación de combinación) es & Omega (nLogn), y no se puede mejorar más allá de nLogn. Si hablamos de ordenación de conteo, es un algoritmo de ordenación de tiempo lineal con complejidad de tiempo O (n + k), donde el rango se encuentra entre 1 y k. Ahora, el problema con el ordenamiento de conteo es que toma O (n2) cuando los elementos van de 1 a n2.



Entonces, para ordenar una matriz con elementos que van de 1 a n2 en tiempo lineal, necesitamos la ordenación por base. La clasificación por radix ordena la matriz dígito por dígito comenzando desde el dígito menos significativo hasta el dígito más significativo. La ordenación por radix utiliza la ordenación por conteo como una subrutina para ordenar.

Continuando con este artículo sobre el programa Radix Sort en C,

Algoritmo de clasificación por radix

Realice los siguientes pasos para todos los dígitos comenzando desde el dígito menos significativo presente en la derecha, moviéndose hacia el dígito más significativo presente en la izquierda.



Ordene los elementos utilizando la clasificación de conteo según el dígito actual.
Ejemplo:

Matriz original:
140, 65, 85, 110, 612, 54, 12, 86

Ordenar el dígito menos significativo, es decir, en el lugar de uno, da

140, 110, 612, 12, 54, 65, 85, 86

NOTA: Como 612 aparece antes de 12, y la clasificación se realiza solo para el dígito de uno, entonces 612 aparece antes de 12 después de esta iteración.

Ordenar por el siguiente dígito, es decir, en el lugar de las decenas, da:

110, 612, 12, 140, 54, 65, 85, 86

Ordenar por dígito más significativo, es decir, presente en el lugar de los 100, da:

012, 054, 065, 085, 086, 110, 140, 612

Continuando con este artículo sobre el programa Radix Sort en C,

Programa de clasificación por radix en C

Primer vistazo a la función de ordenación de Radix

Función de clasificación por radix:

void radixsort (int array [], int n) {// Obtener el número más grande para conocer el número máximo de dígitos int m = getMax (array, n) int dig // Se realiza una ordenación de conteo para cada dígito para (dig = 1 m / dig> 0 dig * = 10) countSort (matriz, n, dig)}

Continuando con este artículo sobre el programa Radix Sort en C,

Función de clasificación de conteo:

void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // Almacenar el recuento de ocurrencias en count [] for (i = 0 i= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Copia el matriz de salida a arr [], de modo que arr [] ahora // contiene números ordenados de acuerdo con el dígito actual para (i = 0 i

Avanzando, escribamos un programa en C para implementar Radix sort.

Ejemplo:

#include // Función para encontrar el número más grande int getMax (int array [], int n) {int max = array [0] int i for (i = 1 i max) max = array [i] return max} // Función para Count sort void countSort (int array [], int n, int dig) {int output [n] int i, count [10] = {0} // Almacenar el recuento de ocurrencias en count [] for (i = 0 yo= 0 i--) {output [count [(array [i] / dig)% 10] - 1] = array [i] count [(array [i] / dig)% 10] -} // Copia el matriz de salida a arr [], de modo que arr [] ahora // contiene números ordenados de acuerdo con el dígito actual para (i = 0 i 0 dig * = 10) countSort (matriz, n, dig)} // Función para imprimir matriz void print (int arr [], int n) {int i para (i = 0 i

Salida

casting doble a int java

Salida- Programa Radix Sort en C- Edureka

Ahora, después de ejecutar el programa anterior, habría entendido el programa Radix Sort en C. Por lo tanto, hemos llegado al final de este artículo sobre 'Quicksort en Java'. Si desea obtener más información, consulte el , una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.