A partire da due sequenze ordinate, V1 e V2, si vuole realizzare una terza sequenza ordinata V3.
Procedure MERGE( V1: Vettore; L1: Integer;
V2: Vettore; L2: Integer;
var V3: Vettore; var L3: Integer);
Var
I, J, K: Integer;
Begin
I:=1;
J:=1;
K:=1;
while(I <= L1) And (J <= L2) do
begin
if(V1[I] <= V2[J]) then
begin
V3[K]:=V1[I];
Inc(I);
end
else
begin
V3[K]:=V2[J];
Inc(J);
end;
Inc(K);
end;
while(I <= L1) do
begin
V3[K]:=V1[I];
Inc(I);
Inc(K);
end;
while(J <= L2) do
begin
V3[K]:=V2[J];
Inc(J);
Inc(K);
end;
L3:=K-1;
End;
Esempio
V1 | V2 | V3 |
---|
1, 2, 4, 5, 7, 10 | 2, 3, 4, 6 | | 2, 4, 5, 7, 10 | 2, 3, 4, 6 | 1 | 4, 5, 7, 10 | 2, 3, 4, 6 | 1, 2 | 4, 5, 7, 10 | 3, 4, 6 | 1, 2, 2 | 4, 5, 7, 10 | 4, 6 | 1, 2, 2, 3 | 5, 7, 10 | 4, 6 | 1, 2, 2, 3, 4 | 5, 7, 10 | 6 | 1, 2, 2, 3, 4, 4 | 7, 10 | 6 | 1, 2, 2, 3, 4, 4, 5 | 7, 10 | | 1, 2, 2, 3, 4, 4, 5, 6 | 10 | | 1, 2, 2, 3, 4, 4, 5, 6, 7 | | | 1, 2, 2, 3, 4, 4, 5, 6, 7, 10 |
|