Principales respuestas
ordenamiento radix

Pregunta
-
Respuestas
-
Suena a que no hiciste la tarea a tiempo, pero aquí hay 2 formas de hacerlo:
Saludos
Christian Amado
Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
Don't forget to mark the right answer and vote up if helps you.
My Blog
My code samples- Propuesto como respuesta Joyce_ACModerator viernes, 3 de marzo de 2017 23:33
- Marcado como respuesta Joyce_ACModerator jueves, 9 de marzo de 2017 15:07
-
Hola isabela cayambe,
Gracias por visitar los foros. Como sabes el ordenamiento radix es un algoritmo de ordenamiento que ordena enteros procesando sus dígitos de forma individual, te comparto el siguiente código que quizá podría serte de utilidad.
using System; using System.Collections.Generic; namespace RadixSort { class Radix { public void RadixSort(int[] a) { // Este es nuestro arreglo auxiliar . int[] t=new int[a.Length]; // Tamaño en bits de nuestro grupo. // Intenta también 2, 8 o 16 para ver si es rápido o no. int r=2; // Número de bits de un entero en c#. int b=32; // Inicia el conteo a asignación de los arreglos. // Notar dimensiones 2^r el cual es el número de todos los valores posibles de un número r- bit int[] count=new int[1<<r]; int[] pref=new int[1<<r]; // Número de grupos. int groups=(int)Math.Ceiling((double)b/(double)r); // Máscara para identificar los grupos. int mask = (1<<r)-1; // Implementación del algoritmo for (int c=0, shift=0; c<groups; c++, shift+=r) { // Reiniciar el conteo en los arreglos. for (int j=0; j<count.Length; j++) count[j]=0; // Contar elementos del c-vo grupo. for (int i=0; i<a.Length; i++) count[(a[i]>>shift)&mask]++; // Calculando prefijos. pref[0]=0; for (int i=1; i<count.Length; i++) pref[i]=pref[i-1]+count[i-1]; // De a[] a t[] elementos ordenados por c-vo grupo . for (int i=0; i<a.Length; i++) t[pref[(a[i]>>shift)&mask]++]=a[i]; // a[]=t[] e inicia otra vez hasta el último grupo. t.CopyTo(a,0); Console.WriteLine("{0}",c); } // Está ordenado } public static void Main(string[] args) { int[] a = new int[7] {2,3,1,0,5,6,9}; Console.WriteLine("Ordenamiento Radix"); Radix O = new Radix(); O.RadixSort(a); Console.ReadLine(); } } }
Saludos
Joyce
__________________________________________________________________________________________
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Propuesto como respuesta Joyce_ACModerator viernes, 3 de marzo de 2017 23:33
- Marcado como respuesta Joyce_ACModerator jueves, 9 de marzo de 2017 15:07
Todas las respuestas
-
Suena a que no hiciste la tarea a tiempo, pero aquí hay 2 formas de hacerlo:
Saludos
Christian Amado
Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
Don't forget to mark the right answer and vote up if helps you.
My Blog
My code samples- Propuesto como respuesta Joyce_ACModerator viernes, 3 de marzo de 2017 23:33
- Marcado como respuesta Joyce_ACModerator jueves, 9 de marzo de 2017 15:07
-
Hola isabela cayambe,
Gracias por visitar los foros. Como sabes el ordenamiento radix es un algoritmo de ordenamiento que ordena enteros procesando sus dígitos de forma individual, te comparto el siguiente código que quizá podría serte de utilidad.
using System; using System.Collections.Generic; namespace RadixSort { class Radix { public void RadixSort(int[] a) { // Este es nuestro arreglo auxiliar . int[] t=new int[a.Length]; // Tamaño en bits de nuestro grupo. // Intenta también 2, 8 o 16 para ver si es rápido o no. int r=2; // Número de bits de un entero en c#. int b=32; // Inicia el conteo a asignación de los arreglos. // Notar dimensiones 2^r el cual es el número de todos los valores posibles de un número r- bit int[] count=new int[1<<r]; int[] pref=new int[1<<r]; // Número de grupos. int groups=(int)Math.Ceiling((double)b/(double)r); // Máscara para identificar los grupos. int mask = (1<<r)-1; // Implementación del algoritmo for (int c=0, shift=0; c<groups; c++, shift+=r) { // Reiniciar el conteo en los arreglos. for (int j=0; j<count.Length; j++) count[j]=0; // Contar elementos del c-vo grupo. for (int i=0; i<a.Length; i++) count[(a[i]>>shift)&mask]++; // Calculando prefijos. pref[0]=0; for (int i=1; i<count.Length; i++) pref[i]=pref[i-1]+count[i-1]; // De a[] a t[] elementos ordenados por c-vo grupo . for (int i=0; i<a.Length; i++) t[pref[(a[i]>>shift)&mask]++]=a[i]; // a[]=t[] e inicia otra vez hasta el último grupo. t.CopyTo(a,0); Console.WriteLine("{0}",c); } // Está ordenado } public static void Main(string[] args) { int[] a = new int[7] {2,3,1,0,5,6,9}; Console.WriteLine("Ordenamiento Radix"); Radix O = new Radix(); O.RadixSort(a); Console.ReadLine(); } } }
Saludos
Joyce
__________________________________________________________________________________________
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Propuesto como respuesta Joyce_ACModerator viernes, 3 de marzo de 2017 23:33
- Marcado como respuesta Joyce_ACModerator jueves, 9 de marzo de 2017 15:07