TEMA5METODOSDEORDENAMIENTO
TEMA5METODOSDEORDENAMIENTO
Sea A una lista de N elementos: 1, 2, 3 ... significaría permutar estos elementos de tal forma
que queden de acuerdo con una distribución prestablecida.
1 < 2 < 3 Forma ascendente
1 > 2 > 3 Forma descendente
En el procesamiento de datos a los métodos de ordenación se les clasifica en dos grandes categorías
según donde hayan sido ordenados:
Los métodos directos tienen la característica que su implementación es relativamente sencilla y son
fáciles de comprender, aunque tienden a ser ineficientes cuando N es de tamaño mediano o grande.
Por lo contrario, los métodos logarítmicos, son mas complejos y su elaboración es mas sofisticada y
difícil de comprende, sin embargo, son mas eficientes ya que requieren de menos comparaciones y
movimientos para orden sus elementos.
5.1.1 Burbuja
También conocido como método de intercambio directo, es medio ineficiente pero es el mas sencillo
de comprender. Este método puede trabajar de dos diferentes maneras: llevando los elementos mas
pequeños hacia la parte izquierda del arreglo o trasladando los elementos mas grandes hacia su parte
derecha. La idea consiste en comparar pares de elementos adyacentes e intercambiarlos entre si
hasta que todos se encuentren ordenados.
Se realiza un numero n-1 pasadas transportando en cada una de ellas el menor o mayor de elementos
a su posición ideal. Al final de las n-1 pasadas los elementos del arreglo estarán ordenados
𝐴
𝑁𝐴
𝐴
𝑛
𝑛
𝐴
𝐴
𝐴
𝑛
𝐴
𝐴
𝐴
𝐴
Ejemplo A: 15, 67, 08, 16, 44, 27, 12, 35
A[7] > A[8] = 12 > 35 No hay intercambio
A[6] > A[7] = 27 > 12 Si hay intercambio
A[5] > A[6] = 44 > 12 Si hay intercambio
A[4] > A[5] = 16 > 12 Si hay intercambio
A[3] > A[4] = 08 > 12 No hay intercambio
A[2] > A[3] = 67 > 08 Si hay intercambio
A[1] > A[2] = 15 > 08 Si hay intercambio
A: 08, 15, 67, 12, 16, 44, 27, 35
A[7] > A[8] = 27 > 35 No hay intercambio
A[6] > A[7] = 44 > 27 Si hay intercambio
A[5] > A[6] = 16 > 27 No hay intercambio
A[4] > A[5] = 12 > 16 No hay intercambio
A[3] > A[4] = 67 > 12 Si hay intercambio
A[2] > A[3] = 15 > 12 Si hay intercambio
A: 08, 12, 15, 67, 16, 27, 44, 35
5.1.2 Quicksort
El método Quicksort es actualmente el mas eficiente y veloz de los métodos de ordenación interna. Es
también conocido como método rápido y de ordenación por partición. La idea central de este
algoritmo es:
Método Main
5.1.3 ShellSort
El método shell es una versión mejorada del método de inserción directa. Este método también se
conoce como inserción con incrementos decrecientes.
A diferencia del método de inserción directa, shell propone que las comparaciones entre elementos
se efectúen con saltos de mayor tamaño, pero con incrementos decrecientes; así, los elementos
quedaran ordenados en el arreglo mas rápidamente.
Consideremos un arreglo que contenga 16 elementos. En primer lugar se dividirán los elementos del
arreglo en 8 grupos, teniendo los elementos que se encuentra a 8 posiciones de distancia entre si y
se ordenaran por separado.
En el tercer paso se dividirán los elementos del arreglo en grupos ahora de dos posiciones de
distancia entre si y nuevamente se les ordenara por separado.
Supongamos que se desea ordenar los elementos que se encuentran en el arreglo siguiente: A : 15,
67, 08, 16, 44, 27, 12, 35, 56, 21, 13, 28, 60, 36, 07, 10
5.1.4 Radix
Este algoritmo funciona trasladando los elementos a una cola, comenzando con el dígito menos
significativo del número (El número colocado más a la derecha tomando en cuenta unidades,
decenas, centenas, etc.). Cuando todos los elementos son ingresados a las colas, éstas se recorren
en orden para después agregarlos al vector.
Este algoritmo es muy rápido en comparación con otros algoritmos de ordenación, sin embargo
ocupa más espacio de memoria al utilizar colas.
Supongamos que tenemos un vector A: 45, 17, 23, 67, 21, 44, 12, 34.
Se asignas los elementos en la cola tomando el digito menos significativo de cada elemento
del vector.
0:
1: 2 1
2: 1 2
3: 2 3
4: 4 4 , 3 4
5: 4 5
6:
7: 1 7 , 6 7
8:
9:
Se orden y después de la primera iteración el vector queda como:
A: 21, 12, 23, 44, 34, 45, 17, 67
Con la segunda iteración el digito menos significativo será el que esta en posición de decenas:
0:
1: 1 2, 2 7
2: 2 1, 2 3
3: 3 4
4: 4 4, 4 5
5:
6: 6 7
7:
8:
9:
En la actualidad es muy común procesar tales volúmenes de información que los datos no se pueden
almacenar en la memoria principal de la computadora. Estos datos, organizados en archivos, se
guardan en dispositivos de almacenamiento secundario, como cintas, discos, etc.
El proceso de ordenar los datos almacenados en varios archivos se conoce como fusión o mezcla; se
entiende por este concepto a la combinación o intercalación de dos o mas secuencias ordenadas en
una única secuencia ordenada.
5.2.1 Intercalación
Se entiende como como la unión o fusión de dos o mas archivos ordenados de acuerdo con un
determinado campo clave, en un solo archivo.
Suponiendo que se tienen dos archivos F1 y F2, cuya información esta ordenada a un campo clave:
F1: 06 09 18 20 35
F2: 10 16 25 28 66 82 87
Se debe producir, entonces, un archivo F3 ordenado, como resultado de la mezcla F1 y F2. Solo se
pueden acceder de forma directa dos claves, la primera del archivo y la segunda del F2. Las
comparaciones que se realizan para producir F3 son:
(06<10)
Si se cumple la condición: Se escribe 06 en el archivo de salida F3 y se vuelve a leer otra clave de F1
(09<10)
Si se cumple la condición: Se escribe 09 en el archivo de salida F3 y se vuelve a leer otra clave de F1
(18<10)
No se cumple la condición: Se escribe 10 en el archivo de salida F3 y se vuelve a leer otra clave de F2.
El proceso continua hasta que en uno u otro archivo se detecte su final; en tal caso se tendrá que
copiar la información del archivo no vacío al archivo de salida F3. El resultado final de la intercalación
entre F1 y F2:
F3: 06 09 10 16 18 20 25 28 35 66 82 87
El método de ordenación por mezcla directa es probablemente el mas utilizado por su fácil
compresión. La idea central de este algoritmo consiste en la realización sucesiva de una partición y
una fusión que produce secuencias ordenadas de longitud cada vez mayor.
Supongamos que se desea ordenar las claves del archivo F. Para esto se utilizan dos archivos
auxiliares a los que se les denominara F1 y F2
F: 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61
Primera pasada
F1: 09 14 29 31 01 13 72 61
F2: 75 68 17 25 05 18 46
F: 09 75 14 68 17 29 25 31 04 05 13 18 46 72 61
Segunda pasada
F1: 09 75 17 29 04 05 46 72
F2: 14 68 25 31 13 18 61
F: 09 14 68 75 17 25 29 31 04 05 13 18 46 61 72
Tercera pasada
F1: 09 14 68 75 04 05 13 18
F2: 17 25 29 31 46 61 72
F: 09 14 17 25 29 31 68 75 04 05 13 18 46 61 72
Cuarta pasada
F1: 09 14 17 25 29 31 68 75
F2: 04 05 13 18 46 61 72
F: 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75
Supongamos que se desea ordenar las claves del archivo F utilizando el método de mezcla
equilibrada:
F: 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61
Partición inicial
F2: 09 75 29 25 46 61
F2: 14 68 17 31 04 05 13 18 72
Hay que observar que al realizar la tercera fusión - partición el segundo archivo queda vacío por lo
tanto se puede afirmar que el archivo ya quedo ordenado.