Está en la página 1de 2

INTERCALACIN MERGE

Cuando se dispone de dos vectores ya ordenados y se desea obtener


un tercer vector tambin ordenado, se puede realizar la ordenacin con
un mtodo denominado Mezcla (Merge en ingles).
Supongamos que A es un vector ordenado de m elementos y es otro
vector ordenado de n elemetos. !a operacin de mezcla producir" un
nuevo vector de m # n elementos.
$l mtodo m"s sencillo, pero menos e%caz, consiste en colocar una
lista detr"s de la otra y luego ordenarla.
Sin embargo este mtodo no aprovec&a la propiedad de que los vectores
A y ya est"n ordenados, por ello debe recurrir normalmente al sistema
de mezcla el cual cosiste en comparar los dos primeros elementos de los
vectores (A y ) y enviar al menor al tercer vector, continuando con el
elemento comparado pero no enviado con el siguiente elemento del
vector que contiene al elemento menor comparado anteriormente y as'
sucesivamente.
(na vez que se terminaron los elementos de un vector, se procede a
vaciar los elementos restantes del otro vector.
Algoritmo:
m=tamao del vector1
n=tamao del vector2
int m,n,i=0,j=0,k=0,p;
while( i < m && j < n !
i"( vec1#i$ <= vec2#j$ !
me%cla#k$=vec1#i$;
i&&;
'
el(e!
me%cla#k$=vec2#j$;
j&&; '
k&&; '
i"( i)= m!
"or( p=j; p < n; p&&!
me%cla#k$=vec2#p$;
k&&; ' '
i"( j)=n !
"or( p=i; p < m; p&& !
me%cla#k$=vec1#p$;
k&&;
'
'
m n i j k p vec1[i] vec2[j] mezcla[k] vec2[p] vec1[p]
inicio
1 3 5 *ector1
2 4 6 8 *ector2
Vector Mezcla
+ , 0 0 0
1
2 1 - - .n(erta 1
1 0 1 + 2 2 - - .n(erta 1 2
1 1 2 + , + - - .n(erta 1 2 +
2 1 + / , , - - .n(erta 1 2 + ,
2 2 , / 0 / - - .n(erta 1 2 + , /
+ 2 / 2 - - 0 0 - .n(erta 1 2 + , / 0
- - 0 + - - 1 1 - 2rdenado 1 2 + , / 0 1
- - 3 , - - - - - - - - - - - - -

También podría gustarte