Beruflich Dokumente
Kultur Dokumente
INTRODUCCION .............................................................................................................................. 4
HISTORIA .......................................................................................................................................... 5
METODO DE ORDENAMIENTO RADIX SORT ......................................................................... 5
EN QUE CONSISTE ESTE METODO ...................................................................................... 5
CARACTERISTICAS: .............................................................................................................. 5
ORDENAMIENTO POR RADIX INTERCAMBIO .................................................................... 6
CLASIFICASION ...................................................................................................................... 6
COMO FUNCIONA EL METODO DE ORDENAMIENTO RADIX SORT ................................ 7
INTRODUCCION
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 perforadas para realizar el
censo de ese año en Estados Unidos.
Al final, después de unas horas, la maquina entregaba todo un grupo de hojas listas
para ser procesadas en un computador.
En el censo de 1880 se tomaron 10 años para procesar toda la información, pero
con las tarjetas perforadas, en la máquina que incluía un “card sorter” 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 surgió una maquina ordenadora de tarjetas. La cual, utilizando
el método de Radix-Sort, concatenaba cada hoja dependiendo de la ubicación de
las ultimas 3 columnas, que contenían las cifras para el acomodo de tarjetas,
estando numerado del 0 al 9.
El algoritmo de Ordenamiento por bases o Radix Sort, ordena los números tomando
en cuenta el valor relativo que tienen las cifras o dígitos de un número en un
determinado sistema de numeración. Se pueden ir agrupando o contando los
números, desde las cifras menos significativas a las más significativas ó en sentido
contrario. El conteo o agrupación de los números se hace tomando en cuenta la
base del sistema de numeración que se elija para ordenar.
EN QUE CONSISTE ESTE METODO
Consiste en ir acomodando los números primero por unidades, luego por decenas,
centenas, etc. No hace comparaciones entre datos.
CARACTERISTICAS:
Clasificar las claves según su bit binario más significativo, de forma que todas las
claves que tengan un primer 0 estén antes de aquella Z.
En este paso ya se diferencia notablemente dos grupos, el formado por las claves
que comienzan con 0, y el formado por las claves que comienzan con 1. Ahora se
aplica de nuevo el primer paso a cada grupo formado pero con el bit siguiente.
CLASIFICASION
- De derecha a izquierda y
- De izquierda a derecha.
El Radix MSD procesa los enteros iniciando por el digito más significativo y
moviéndose al digito menos significativo (de izquierda a derecha).
El más grande de dos enteros de igual longitud se determina del modo siguiente:
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).
#include <iostream>
#include <conio.h>
using namespace std;
// maximo valor del arrglo
int getMax(int A[], int n)
{
int max = A[0];
for (int i = 1; i < n; i++)
if (A[i] > max)
max = A[i];
return max;
}
void countSort(int A[], int n, int exp)
{
int output[100], i, count[10]={0};
for (i = 0; i < n; i++)
count[(A[i] / exp) % 10]++; // determinando de cuantas cifras es el
maximo numero
for (i = 1; i < 10; i++)
count[i] += count[i-1]; // exp % 10].
for (i = n - 1; i >= 0; i--)
{
output[count[(A[i] / exp) % 10] - 1] = A[i];
count[(A[i] / exp) % 10]--;
} // asignado el puntero exp
for (i = 0; i < n; i++)
A[i] = output[i];//cargando al arreglo A
}
// llamando al programa radix sort
void radixsort(int A[], int n)
{
int exp, m;
m = getMax(A, n); // llamando al countSort() para ver cual es el numero
mayor
for (exp = 1; m/exp > 0; exp *= 10)
countSort(A, n, exp);
}
int main()
{
int n,i;
cout<<"INGRESE LA DIMENSION DEL ARREGLO "<<endl;
cout<<"n = ";
cin>>n;
cout<<"ingrese los elementos desordenados "<<endl;
int A[100];
for(i = 0; i < n; i++)
{
cout<<"A["<<i<<"]=";
cin>>A[i];
}
radixsort(A, n);
cout<<" imprimiendo los elementos ordenados "<<endl;
for (i = 0; i < n; i++)
cout<<"A["<<i<<"]="<<A[i]<<endl;
return 0;
}