Mergesort

Post on 24-May-2015

2.462 views 3 download

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