Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Itsguasave.edu.mx
ESTRUCTURA DE DATOS
Competencia de la Unidad
• Conoce, comprende y aplica los algoritmos de ordenamiento para el uso
adecuado en el desarrollo de aplicaciones que permita solucionar
problemas del entorno.
ESTRUCTURA DE DATOS
INTRODUCCIÓN
Algoritmos Internos
de Ordenamiento
ESTRUCTURA DE DATOS
ORDENACIÓN
• La ordenación o clasificación de datos (sort en inglés) es una operación
consistente en disponer un conjunto de datos en algún determinado orden
con respecto a uno de los campos de los elementos del conjunto. Por ejemplo,
cada elemento del conjunto de datos de una guía telefónica tiene un campo
nombre, un campo dirección y un campo número de teléfono;
MÉTODO DE ORDENAMIENTO
BURBUJA
ESTRUCTURA DE DATOS
ORDENACIÓN POR BURBUJA
El algoritmo terminará
cuando se termine la
última pasada (n – 1), o
bien cuando el valor del
interruptor sea falso,
es decir, que no se haya
hecho ningún intercambio.
ESTRUCTURA DE DATOS
Conjunto de 8 elementos:
Debe describir pasada por pasada como se intercambian los elementos del
arreglo hasta lograr tener un arreglo perfectamente ordenado de menor a
mayor
ESTRUCTURA DE DATOS
Módulo de ordenamiento
CODIFICACIÓN DEL
MÉTODO BURBUJA
EN C++
Variables Globales
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
QUICKSORT
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO QUICKSORT
• El algoritmo conocido como quicksort (ordenación rápida) es simple, se basa
en la división de la lista en particiones a ordenar, en definitiva aplica la técnica
"divide y vencerás". El método es, posiblemente, el más pequeño de código,
más rápido y eficiente de los algoritmos conocidos de ordenación.
• El algoritmo divide los n elementos de la lista a ordenar en dos partes o
particiones separadas por un elemento: una partición izquierda, un elemento
central denominado pivote, y una partición derecha.
• La partición se hace de tal forma que todos los elementos de la primera
sublista (partición izquierda) son menores que todos los elementos de la
segunda sublista (partición derecha).
• Las dos sublistas se ordenan entonces independientemente.
ESTRUCTURA DE DATOS
EJEMPLO DE QUICKSORT CON UN ARREGLO DE 5 ELEMENTOS
ESTRUCTURA DE DATOS
Conjunto de 8 elementos:
Debe describir pasada por pasada como se intercambian los elementos del
arreglo hasta lograr tener un arreglo perfectamente ordenado de menor a
mayor
ESTRUCTURA DE DATOS
Módulo de ordenamiento
CODIFICACIÓN DEL
MÉTODO QUICKSORT
EN C++
Método main()
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
SHELLSORT
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO SHELLSORT
• La ordenación Shell debe el nombre a su inventor, D. L. Shell. Se suele
denominar también ordenación por inserción con incrementos decrecientes. Se
considera que es una mejora del método de inserción directa.
• En el algoritmo de inserción, cada elemento se compara con los elementos
contiguos de su izquierda, uno tras otro. Si el elemento a insertar es el más
pequeño hay que realizar muchas comparaciones antes de colocarlo en su
lugar definitivo.
• El algoritmo de Shell modifica los saltos contiguos por saltos de mayor tamaño
y con ello consigue que la ordenación sea más rápida. Generalmente, se toma
como salto inicial n / 2 (siendo n el número de elementos), luego en cada
iteración se reduce el salto a la mitad, hasta que el salto es de tamaño 1.
ESTRUCTURA DE DATOS
Ejemplo: Arreglo de 8 elementos
Arreglo original 8 2 5 4 7 1 3 6
Salto inicial: 8 / 2 = 4 8 2 5 4 7 1 3 6
Arreglo resultante 7 1 3 4 8 2 5 6
ESTRUCTURA DE DATOS
3 7 8 5 1 2 4 6
3 7 5 8
Arreglo resultante
3 5 7 8
3 1 5 2 7 4 8 6
ESTRUCTURA DE DATOS
Salto subsecuente: 8 / 8 = 1
3 1 5 2 7 4 8 6 1 2 3 4 5 7 8 6
1 3 5 2 7 4 8 6 1 2 3 4 5 7 6 8
1 3 2 5 7 4 8 6
1 2 3 4 5 6 7 8
1 2 3 5 7 4 8 6
1 2 3 5 4 7 8 6
Arreglo resultante
1 2 3 4 5 6 7 8
ESTRUCTURA DE DATOS
Vídeo de Ordenación
Shell
ESTRUCTURA DE DATOS
Método de Ordenación Shellsort
Conjunto de 8 elementos:
Debe describir pasada por pasada como se intercambian los elementos del
arreglo hasta lograr tener un arreglo perfectamente ordenado de menor a
mayor.
ESTRUCTURA DE DATOS
CODIFICACIÓN DEL MÉTODO
SHELLSORT EN C++
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
RADIXSORT
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO RADIXSORT
Este método de ordenación es un caso particular del algoritmo de clasificación por
urnas. La manera de ordenar, manualmente, un conjunto de fichas nos da una idea
intuitiva de este método de ordenación:
Se forman montones de fichas, cada uno caracterizado por tener sus
componentes un mismo dígito en la misma posición.
Inicialmente se forman los montones por las unidades (dígito de menor peso);
estos montones se recogen y agrupan en orden ascendente, desde el montón del
dígito 0 al montón del dígito 9.
Entonces, las fichas están ordenadas respecto a las unidades, a continuación, se
vuelve a distribuir las fichas en montones, según el dígito de las decenas.
El proceso de distribuir las fichas por montones y posterior acumulación en orden
se repite tantas veces como número de dígitos tiene la ficha de mayor valor.
ESTRUCTURA DE DATOS
Suponer que las fichas están identificadas por un campo entero de tres dígitos,
los pasos del algoritmo RadixSort para los siguientes valores:
Esta lista ya está ordenada respecto al dígito de menor peso, respecto a las unidades.
Pues bien, ahora se vuelven a distribuir en montones respecto al segundo dígito
(decenas):
ESTRUCTURA DE DATOS
Una vez agrupados los montones en orden ascendente la lista es la siguiente
La lista fichas ya está ordenada respecto a los dos últimos dígitos, es decir, respecto a
las decenas. Por último, se vuelven a distribuir en montones respecto al tercer dígito:
Conjunto de 15 elementos:
A [15]= {17, 23, 58, 34, 49, 12, 91, 62, 76, 5, 83, 15, 51, 96, 29}
Debe describir pasada por pasada como se intercambian los elementos del
arreglo hasta lograr tener un arreglo perfectamente ordenado de menor a
mayor
ESTRUCTURA DE DATOS
CODIFICACIÓN DEL MÉTODO RADIXSORT EN C++
ESTRUCTURA DE DATOS
Algoritmos Externos
de Ordenamiento
ESTRUCTURA DE DATOS
Métodos de Ordenación Externa
Intercalación o Merge
Mezcla Directa
Mezcla Natural
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
INTERCALACIÓN
ESTRUCTURA DE DATOS
Método de Ordenamiento por Intercalación o Merge
Pasos:
• En este método de ordenamiento existen dos archivos con llaves previamente
ordenadas con cualquier otro método de ordenamiento, los cuales se mezclan
para formar un solo archivo.
• La longitud de los archivos puede ser diferente.
• El proceso consiste en leer un registro de cada archivo y compararlos, el menor
es almacenando en el archivo de resultado y el otro se compara con el
siguiente elemento del archivo si existe.
• El proceso se repite hasta que alguno de los archivos quede vacío y los
elementos del otro archivo se almacenan directamente en el archivo
resultado.
ESTRUCTURA DE DATOS
• Ejemplo del método de Intercalación
ESTRUCTURA DE DATOS
RESULTADO 87 503 512 573 581 625 670 677 762
i i i
503 573 581 625 670 762 573 581 625 670 762 670 762
j j
j
87 512 677 677
677
i < j = no; se mueve 87 y se mueve j i < j = si; se mueve 573 y se mueve i i < j = si; se mueve 670 y se mueve i
i i i
503 573 581 625 670 762 581 625 670 762 762
j j j
i < j = si; se mueve 503 y se mueve i i < j = si; se mueve 581 y se mueve i i < j = no; se mueve 677
i i i
j
j El puntero i ya no tiene con quien
512 677 677 compararse por lo que se asume él
y los números subsecuentes están
i < j = no; se mueve 512 y se mueve j i < j = si; se mueve 625 y se mueve i ordenados y se colocan al final.
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
MEZCLA DIRECTA
ESTRUCTURA DE DATOS
Método de Ordenamiento por Mezcla Directa
En la primera división se
compara por pares un
elemento de cada arreglo
ESTRUCTURA DE DATOS
Ejemplo Mezcla Directa
Arreglo de pares Comparamos en pares, un
ordenados elemento por cada arreglo
de acuerdo al rango
09 75 14 68 17 29 25 31
09 < 17 = SI; se mueve 09;
75 < 17 = NO; se mueve 17; Ahora tenemos un
75 < 29 = NO; se mueve 29; como es el nuevo arreglo
Segunda División último par del bloque se mueve el 75; fusionado que sirve
como base para la
09 75 14 68 14 < 25 = SI; se mueve 14; siguiente división.
68 < 25 = NO; se mueve 25; En el actual arreglo los
elementos han
17 29 25 31 68 < 31 = NO; se mueve 31; como es el quedado agrupados en
último elemento del bloque se mueve 68; cuartetos ordenados
En la segunda división
aumenta al doble el rango Fusión resultante
de comparación entre un
arreglo y otro 09 17 29 75 14 25 31 68
ESTRUCTURA DE DATOS
Arreglo de pares Ejemplo Mezcla Directa
ordenados
Comparamos en pares, un
09 17 29 75 14 25 31 68 elemento por cada arreglo
de acuerdo al rango
Módulo para
Mezcla directa
ESTRUCTURA DE DATOS
MÉTODO DE ORDENAMIENTO
MEZCLA NATURAL
ESTRUCTURA DE DATOS
MÉTODO DE MEZCLA NATURAL
Arreglos Auxiliares
AX1 09 75 29 25 46 61
AX2 14 68 17 31 04 05 13 18 72
Primera fusión
Arreglos Auxiliares
AX1 09 14 68 75 04 05 13 18 25 72
AX2 17 29 31 46 61
Segunda fusión
Este arreglo fusionado sirve
09 14 17 29 31 68 75 04 05 13 18 25 46 61 72 como base para la siguiente
pasada
ESTRUCTURA DE DATOS
EJEMPLO DEL ALGORITMO DE MEZCLA NATURAL
Partición 1
A 09 14 17 29 31 68 75 04 05 13 18 25 46 61 72
Arreglos Auxiliares
AX1 09 14 17 29 31 68 75
AX2 04 05 13 18 25 46 61 72
Tercera fusión
El arreglo esta ordenado por
04 05 09 13 14 17 18 25 29 31 46 61 68 72 75 lo que termina el proceso
ESTRUCTURA DE DATOS
Módulo que
calcula las Módulo que inicializa los
particiones arreglos auxiliares
ESTRUCTURA DE DATOS