You are on page 1of 14

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

1
Se copia el valor del vector B y los subindices K y J, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 3 y 6, se mueve el menor


Merge Sort

1 3
Se copia el valor del vector A y los subindices K e I, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 5 y 6, se mueve el menor


Merge Sort

1 3 5
Se copia el valor del vector A y los subindices K e I, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 8 y 6, se mueve el menor


Merge Sort

1 3 5 6
Se copia el valor del vector B y los subindices K y J, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 8 y 9, se mueve el menor


Merge Sort

1 3 5 6 8
Se copia el valor del vector A y los subindices K e I, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 12 y 9, se mueve el menor


Merge Sort

1 3 5 6 8 9
Se copia el valor del vector B y los subindices K y J, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 12 y 24, se mueve el menor


Merge Sort

1 3 5 6 8 9 12
Se copia el valor del vector A y los subindices K e I, se mueven
una posición

3 5 8 12 17 1 6 9 24

Se comparan los siguientes valores 17 y 24, se mueve el menor


Merge Sort

De igual forma se sigue con los siguientes valores hasta


completar el recorrido

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
Merge Sort
Inicio combina( A : vector ; B : vector)
Mientras (I < longitud A) hacer
Crear Vector C con longitudes de A y B
C[ K ]  A[ I ]
I1
KK+1
J 1
II+1
K 1
Mientras (J < longitud B) hacer
Mientras (I < longitud A) y (j < longitud B)
C[ K ]  B[ J ]
hacer
KK+1
Si A[ I ] < B[ J ] entonces
JJ+1
C[ K ]  A[ I ]
Fin combina
KK+1
II+1
de lo contrario
C[ K ]  B[ J ]
KK+1
JJ+1
fin hacer
Merge Sort
 Se puede utilizar este algoritmo para
ordenar un vector.

Inicio MergeSort( A : vector ; liminf : entero ; limsup: entero)


Si (liminf = limsup) entonces
finalizar
de lo contrario
medio  liminf + limsup / 2
(combina (MergeSort (A , liminf, medio), MergeSort( A , medio, limsup))
Fin Inicio
Merge Sort

You might also like