Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Fusione: V' e V'' in V

Precedente
SUPERIORE
Successiva

Il vettore V contiene due sequenze adiacenti ordinate (V' da Inf a Medio e V'' da Medio+1 a Sup). Si puņ adattare l'algoritmo di fusione su tre vettori in modo che i dati siano copiati, in ordine, su un vettore temporaneo e poi ricopiati su V, da Inf a Sup

procedure MERGE(Var V: Vettore; Inf, Medio, Sup: Integer);
Var
   I, J, K: Integer;
   VTemp: Vettore;
begin
   I:=Inf;
   J:=Medio+1;
   K:=Inf;
   while(I <= Medio) And (J <= Sup) do
      begin
         if(V[I] < V[J]) then
            begin
               VTemp[K]:=V[I];
               Inc(I);
            end
         else
            begin
               VTemp[K]:=V[J];
               Inc(J);
            end;
         Inc(K);
      end;
   while(I <= Medio) do
      begin
         VTemp[K]:=V[I];
         Inc(I);
         Inc(K);
      end;
   while(J <= Sup) do
      begin
         VTemp[K]:=V[J];
         Inc(J);
         Inc(K);
      end;
   for I:=Inf to Sup do
      V[I]:=VTemp[I];
end;

Esempi

V={1, 2, 4, 5, 7, 10, 2, 3, 4, 6}, inf=1, medio=6, sup=10 --> V={1, 2, 2, 3, 4, 4, 5, 6, 7, 10}
V={1, 2, 4, 5, 7, 10, 2, 3, 4, 6}, inf=5, medio=6, sup=8  --> V={1, 2, 4, 5, 2, 3, 7, 10, 4, 6}

Fusione: V' e V'' in V - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva