MÉTODO DE BINSORT
MÉTODO DE BINSORT
Este método, también llamado clasificación por urnas,
persigue conseguir funciones de tiempo de ejecución menores de O(n log n), para
ordenar una secuencia de n elementos siempre que se conozca algo acerca del
tipo de las claves por las que se están ordenando.
Supóngase que se tiene un vector v[] de registros, se quiere
ordenar respecto un campo clave de tipo entero, además se sabe que los valores
de las claves se encuentran en el rango de 1 a n, sin claves duplicadas y
siendo n el número de elementos. En estas circunstancias es posible colocar los
registros ordenados en un array auxiliar t[] mediante este bucle:
for 1:= 1 to n do
t[v[i].clave] = v[i];
Sencillamente determina la posición que le corresponde según
el valor del campo clave. El bucle lleva un tiempo de ejecución de complejidad O(n).
Esta ordenación tan sencilla que se ha expuesto es un caso
particular del método de ordenación por urnas (binsort). Este método utiliza
urnas, cada urna contiene todos los registros con una misma clave.
El proceso consiste en examinar cada registro r a clasificar
y situarle en la urna i, coincidiendo i con el valor del campo clave de r. En
la mayoría de los casos en que se utilice el algoritmo, será necesario guardar
más de un registro en una misma urna por tener claves repetidas. Entonces estas
urnas hay que concatenarlas en el orden de menor índice de urna a mayor, así
quedará el array en orden creciente respecto al campo clave.
Comentarios
Publicar un comentario