Mergesort
Transcript of Mergesort
Julio Cesar García Lechuga 1449675Raúl Rodríguez Salazar 1460392Alberto Huerta Jaramillo
Mergesort
Se basa en la técnica divide y vencerás (DYV).
Divide: Divide la secuencia de n elementos en dos subsecuencias de n/2 elementos.
Vence: Ordena ambas subsecuencias de manera recursiva.
Ordenamiento por mezcla
Combina: Mezcla las dos subsecuencias ordenadas para obtener la solución del problema.
Si A[n..] (n==1){«Esta Ordenado»}Si noRealiza {A[n]/2;}Mientras (n=!1)Mezcla
Pseudocódigo
6 12 4 9 8 13 5
4 6 9 12 5 8 13
4 5 6 8 9 12 13
Llamada recursiva 1 ( MergeSort )
Llamada recursiva 2 ( MergeSort )
Llamada recursiva 3 ( MergeSort )
Volver 3 a 2 ( Combina )
Volver 2 a 1 ( Combina )
Combina
Ordenamiento por mezcla
1. Si la longitud de la lista es 0 ó 1, entonces
ya está ordenada. En otro caso:
2. Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.
Funcionamiento
3. Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla.
4. Mezclar las dos sublistas en una sola lista ordenada.
Funcionamiento
Ejemplo de ordenamiento por mezcla ordenar una
lista de puntos
aleatorios.
Método estable de ordenamiento mientras la operación de mezcla (Merge) sea bien implementada.
Este algoritmo es efectivo para conjuntos de datos que se puedan acceder secuencialmente como arreglos, vectores y listas ligadas
Ventajas
Su principal desventaja radica en que está definido recursivamente y su implementación no recursiva emplea una pila, por lo que requiere un espacio adicional de memoria para almacenarla.
Desventajas
El ordenamiento por mezcla tiene una complejidad de O(n logn).
Complejidad
Aunque heapsort tiene los mismos límites de tiempo que merge sort, requiere sólo O(1) espacio auxiliar en lugar del O(n) de merge sort, y es a menudo más rápido en implementaciones prácticas.
Comparación con otros algoritmos de ordenamiento
Quicksort, sin embargo, es considerado por mucho como el más rápido algoritmo de ordenamiento. Merge sort es un ordenamiento estable, paraleliza mejor, y es más eficiente manejando medios secuenciales de acceso lento.
Comparación con otros algoritmos de ordenamiento
Merge sort es a menudo la mejor opción para ordenar una lista enlazada: es relativamente fácil implementar merge sort de manera que sólo requiera Θ(1) espacio extra.
Comparación con otros algoritmos de ordenamiento
http://es.wikipedia.org/wiki/Ordenamiento_por_mezcla
www.dtic.upf.edu/~jonsson/pII09/Apuntes/TeoriaSemana5.ppt
http://aprende-sistemasarreglos.blogspot.com/2009/03/mergesort.html
Referencia Bibliográfica