Mergesort

15
Julio Cesar García Lechuga 1449675 Raúl Rodríguez Salazar 1460392 Alberto Huerta Jaramillo Mergesort

Transcript of Mergesort

Page 1: Mergesort

Julio Cesar García Lechuga 1449675Raúl Rodríguez Salazar 1460392Alberto Huerta Jaramillo

Mergesort

Page 2: 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

Page 3: Mergesort

Combina:  Mezcla las dos subsecuencias ordenadas para obtener la solución del problema.

Page 4: Mergesort

Si A[n..] (n==1){«Esta Ordenado»}Si noRealiza {A[n]/2;}Mientras (n=!1)Mezcla

Pseudocódigo

Page 5: Mergesort

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

Page 6: Mergesort

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

Page 7: Mergesort

3. Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla.

4. Mezclar las dos sublistas en una sola lista ordenada.

Funcionamiento

Page 8: Mergesort

Ejemplo de ordenamiento por mezcla ordenar una

lista de puntos

aleatorios.

Page 9: Mergesort

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

Page 10: Mergesort

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

Page 11: Mergesort

El ordenamiento por mezcla tiene una complejidad de O(n logn).

Complejidad

Page 12: Mergesort

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

Page 13: Mergesort

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

Page 14: Mergesort

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