0% encontró este documento útil (1 voto)
422 vistas3 páginas

MergeSort: Guía y Ejemplo

El algoritmo MergeSort divide una lista desordenada en sublistas individuales, ordena cada sublista de forma recursiva mediante nuevas subdivisiones, y luego combina las sublistas ordenadas en una lista ordenada final mediante una fusión. Es un algoritmo de ordenación estable de complejidad O(n log n) que fue inventado originalmente por John von Neumann en 1945.

Cargado por

Nalia RS
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
422 vistas3 páginas

MergeSort: Guía y Ejemplo

El algoritmo MergeSort divide una lista desordenada en sublistas individuales, ordena cada sublista de forma recursiva mediante nuevas subdivisiones, y luego combina las sublistas ordenadas en una lista ordenada final mediante una fusión. Es un algoritmo de ordenación estable de complejidad O(n log n) que fue inventado originalmente por John von Neumann en 1945.

Cargado por

Nalia RS
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El algoritmo MergeSort

Para combinar (la fase de ``vencer''), podemos utilizar un algoritmo sencillo que utiliza una tabla auxiliar para aadir el elemento que corresponde de cada una de las dos subtablas.

Se comparan los elementos una[iu] y otra[io], el menor se copia a final[ifinal] y se incrementan el ndice del origen que se ha copiado (iu o io) y el ndice de la tabla destino (ifinal).
Combinar tipo es un O (n log n) basado en la comparacin algoritmo de ordenacin . La mayora de las implementaciones de producir una especie estable , lo que significa que la aplicacin conserva el orden de entrada de elementos iguales en la salida ordenada. Combinar tipo es un algoritmo de divide y vencers que fue inventado por John von Neumann en 1945. [1] Una descripcin detallada y el anlisis de abajo hacia arriba mergesort apareci en un informe de Goldstine y Neumann en 1948. [2] Algoritmo Conceptualmente, una especie de combinacin funciona de la siguiente 1. Divida la lista desordenada en sublistas n, cada uno con un elemento (una lista de un elemento se considera clasificado). 2. Repetidamente Combinar sublistas para producir sublistas nuevas hasta que slo quede una sublista restante.(Esta ser la lista ordenada.) 3. Ejemplo de pseudocdigo de arriba hacia abajo fusionar algoritmo de ordenacin que utiliza la recursividad para dividir la lista en sub-listas, a continuacin, combina sublistas durante los regresos copia de seguridad de la cadena de llamadas.

4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.

funcin de merge_sort (m lista) / / Si el tamao de la lista es de 1, tenga en cuenta lo resuelto y devolverlo si la longitud (m) <= 1 volver m / / Tamao de la lista lo dems es> 1, por lo que divide la lista en dos sublistas var lista de la izquierda, derecha var entero media = longitud (m) / 2 para cada x en m antes de la mitad agregue x a la izquierda para cada x de m despus de media o iguales agregue x a la derecha / / Llamar recursivamente merge_sort () para dividir an ms a cada sublista / / Hasta que el tamao es una sublista izquierda = merge_sort (izquierda) derecha = merge_sort (derecha) / / Fusionar las sublistas devueltos por las llamadas antes de merge_sort () / / Y devolver la sublista combinada resultante volver merge (izquierda, derecha)

22. En este ejemplo, la merge funcin fusiona las sublistas izquierdo y derecho.
23. 24. 25. 26. 0 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ms append primera (derecha) para dar derecha = reposo (derecha) otra cosa si la longitud (izquierda)> 0 append primero (izquierda) para producir izquierda = reposo (izquierda) otra cosa si la longitud (derecha)> 0 append primero (derecha) para dar derecha = reposo (derecha) final mientras si primero (izquierda) <= primero (derecha) append primero (izquierda) para producir izquierda = reposo (izquierda) funcin de fusin (izquierda, derecha) lista de resultados var mientras que la longitud (izquierda)> 0 o longitud (derecha)> 0 si la longitud (izquierda)> 0 y la longitud (derecha)>

40.

return resultado

VER GIF:

Un ejemplo de tipo de mezcla. En primer lugar dividir la lista en la unidad ms pequea (1 elemento), y luego comparar cada elemento de la lista al lado de ordenar y unir las dos listas adyacentes. Por ltimo, todos los elementos se ordenan y se fusionaron.

Clase

Algoritmo de clasificacin

Estructura de datos

Matriz

Peor de los casos el rendimiento

O (n log n)

Mejor de los casos el rendimiento

O (n log n) tpico, O (n) variante natural

El rendimiento promedio de los casos Peor de los casos la complejidad del espacio

O (n log n)

O (n) auxiliar

También podría gustarte