Merge Sort
-
Upload
universidad-nacional-de-colombia -
Category
Documents
-
view
4.444 -
download
3
Transcript of Merge Sort
Merge Sort
Merge Sort
• Este algoritmo tambien es llamado de Intercalación o combinación, debido que combina (intercala) dos estructuras previamente ordenadas.
Merge Sort
Supongamos los siguientes vectores previamente ordenados, el nuevo vector contendra la cantidad de elementos de ambos
3 5 8 12 17 1 6 9 24
Se comparan los primeros elementos 3 y 1, el menor se copia
Merge Sort
3 5 8 12 17 1 6 9 24
1
Se comparan los siguientes valores 3 y 6, se mueve el menor
Se copia el valor del vector B y los subindices K y J, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3
Se comparan los siguientes valores 5 y 6, se mueve el menor
Se copia el valor del vector A y los subindices K e I, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3 5
Se comparan los siguientes valores 8 y 6, se mueve el menor
Se copia el valor del vector A y los subindices K e I, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3 5 6
Se comparan los siguientes valores 8 y 9, se mueve el menor
Se copia el valor del vector B y los subindices K y J, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3 5 6 8
Se comparan los siguientes valores 12 y 9, se mueve el menor
Se copia el valor del vector A y los subindices K e I, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3 5 6 8 9
Se comparan los siguientes valores 12 y 24, se mueve el menor
Se copia el valor del vector B y los subindices K y J, se mueven una posición
Merge Sort
3 5 8 12 17 1 6 9 24
1 3 5 6 8 9 12
Se comparan los siguientes valores 17 y 24, se mueve el menor
Se copia el valor del vector A y los subindices K e I, se mueven una posición
Merge Sort
1 3 5 6 8 9 12 17 24
El proceso termina cuando uno de los dos subindices I o J, llega hasta la longitud del vector. En ese momento se termina de copiar los siguientes valores del vector
De igual forma se sigue con los siguientes valores hasta completar el recorrido
Merge Sort
Inicio combina( A : vector ; B : vector)Crear Vector C con longitudes de A y BI 1J 1K 1Mientras (I < longitud A) y (j < longitud B) hacer Si A[ I ] < B[ J ] entonces
C[ K ] A[ I ]K K + 1I I + 1
de lo contrarioC[ K ] B[ J ]K K + 1J J + 1
fin hacer
Mientras (I < longitud A) hacerC[ K ] A[ I ]K K + 1I I + 1
Mientras (J < longitud B) hacerC[ K ] B[ J ]K K + 1J J + 1
Fin combina
Se puede utilizar este algoritmo para ordenar un vector.
Merge Sort
Inicio MergeSort( A : vector ; liminf : entero ; limsup: entero) Si (liminf = limsup) entonces finalizarde lo contrario medio liminf + limsup / 2 (combina (MergeSort (A , liminf, medio), MergeSort( A , medio, limsup))Fin Inicio
Merge Sort