Ordenamiento Radix

Download Report

Transcript Ordenamiento Radix

ORDENAMIENTO RADIX

Equipo 3

• •

Arenas Sapien Jorge Iván De La Rosa Bernal José Leonel

Radix sort

ANTECEDENTES

    Se dice que este método nació de la idea de Herman Hollerith en 1890 al crear la maquina tabuladora, en la cual se empleaban tarjetas per foradas para realizar el censo de ese año en Estados Unidos.

Al final, despues de unas horas, la maquina entregaba todo un grupo de hojas listas para ser procesadas en un computador.

En el censo de 1 880 se tomaron 10 años para procesar toda la información, pero con las tarjetas per foradas, en la maquina que incluía un “card sor ter” se tomaron cerca de 6 semanas.

La idea original de Hollerith era ordenar empezando por el digito más significativo.

 Es de esta forma que surgio una maquina ordenadora de tarjetas. La cual, utilizando el metodo de de tarjetas, estando numerado del 0 al 9.

Radix-Sort, concatenaba cada hoja dependiendo de la ubicacion de las ultimas 3 columnas, que contenían las cifras para el acomodo

RADIX SORT

 A este método también se le llama “ordenamiento de raíz”.

 Este ordenamiento se basa en los valores de los dígitos reales en las representaciones de posiciones de los números que se ordenan. Por ejemplo, el número235 en notación decimal se escribe con un 2 en la posición de centenas, un 3 en la posición de decenas y un5 en la posición de unidades.

 Tome cada número en el orden en el cual aparecen en el archivo y colóquelos en una de las diez colas (0...9) dependiendo del valor del dígito que es procesado.

 Empezando con la cola de los números con dígito 0 y terminando con la cola de números con dígito 9. Retorne los números al archivo original en el orden en el cual fueron colocados en la cola,(empezar con el dígito menos significativo y concluir con el más significativo).

REGLAS PARA ORDENAR

 El más grande de dos enteros de igual longitud se determina del modo siguiente: 1.

Empezar en el dígito más significativo y avanzar por los dígitos menos significativos mientras coinciden los dígitos correspondientes en los dos números.

1.

El número con el dígito más grande en la primera posición en la cual los dígitos de los dos números no coinciden es el mayor de los dos (por supuesto sí coinciden todos los dígitos de ambos números, son iguales).

APLICACIONES Tiene muchas entre ellas:

 Para ordenar números enteros o flotantes  Para ordenar letras  En manejo de archivos ejemplo el md5, encargado de poder mandar archivos mayor de 1gb utiliza el Radix Sort en su procedimiento.

 Para todo tipo de ordenamiento de números aleatorios.

PSEUDOCÓDIGO

 RadixSort (Ordenar array A, tamaño) Crear todas las bandejas o contenedores.

Desde el dígito menos significativo de la cifra más significativa { { Para cada elemento (de la primera a la última) Aislar el valor del dígito significativo.

Guarde el elemento en el contenedor con la correspondiente valor del dígito significativo.

} Para cada intervalo (de la primera a la última) { } } Recuperar todos los elementos y guardarlos de nuevo en la matriz.

Destruye todos los contenedores http://www.gamedev.net/page/resources/_/technical/general-programming/radix-sort-r703

CODIGO

Radixsort.C

CARACTERÍSTICAS

Radix Sort

Mejor Caso Peor Caso Caso Promedio Estabilida d Memoria Adicional Comparació n

O(n) O(n) O(n) Estable Si No compara

CARACTERÍSTICAS

 Debido a que el ciclo for (

m

veces (una para cada dígito) y el ciclo interior para cada elemento en el archivo) el ordenamiento es de aproximadamente (

m

*

n

).

i

= 1;

i

<

m

;

i

++) externo se recorre

n

veces (una  Si las llaves son complejas (es decir, si casi cada número que puede ser una llave lo es en realidad)

m

se aproxima a log

n

, por lo que (

m

*

n

) se aproxima a (

n

log

n

).

 Si la cantidad de dígitos es grande, en ocasiones es más eficiente después ordenar utilizando el archivo inserción aplicando directa sobre primero el el ordenamiento de raíz a los dígitos más significativos y archivo ordenado.

VENTAJAS

 El ordenamiento es razonablemente eficiente si el número de dígitos en las llaves no es demasiado grande.

 Si las máquinas tienen la ventaja de ordenar los dígitos (sobre todo si están en binario) lo ejecutarían con mucho mayor rapidez de lo que ejecutan una comparación de dos llaves completas.

DESVENTAJAS

Esta es considerada ventaja y desventaja:  Se requiere conocer la cantidad de dígitos del valor máximo (para saber cuando el método ya acomodo todos los elementos).

 Se requiere de espacio para almacenar los punteros del frente y de la parte posterior de la cola, además de un campo adicional en cada registro que se utiliza como puntero a la lista encadenada.

FUENTES

 Algoritmos y estrctura de datos ;

Luis Joyanes Aguilar, Ignacio zahonero martinrz, Ed. Mc graw hill.

Una perspectiva en C ;

http://www.gamedev.net/page/resources/_/technical/general programming/radix-sort-r703

http://es.wikipedia.org/wiki/Ordenamiento_Radix

http://estructura-de-datos-itsav.blogspot.mx/2012/03/621 radix-ordenacion.html

http://es.scribd.com/doc/19540984/RADIX