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

Merge Sort

Precedente
SUPERIORE
Successiva

Utilizza l'algoritmo di fusione su un vettore.

Procedure MERGESORT(Var V: Vettore; Inf, Sup: Integer);
Var
   Medio: Integer;
begin
   if(Inf < Sup) then
      begin
         Medio:=(Inf+Sup) Div 2;
         MERGESORT(V, Inf    , Medio);
         MERGESORT(V, Medio+1, Sup  );
         Merge(V, Inf, Medio, Sup);
      end;
end;

Esempio 1

V={1, 3, 7, 4, 15, 0, 9, 10}

Gli indici Inf e Sup assumono i valori

1...8
1..4 5...8
1...2 3...4 5...6 7...8
1...1 2...2 3...3 4...4 5...5 6...6 7...7 8...8

e il vettore diventa

{1, 3, 7, 4, 15, 0, 9, 10}
{1, 3, 7, 4} {15, 0, 9, 10}
{1, 3} {7, 4} {15, 0} {9, 10}
{1} {3} {7} {4} {15} {0} {9} {10}
{1, 3} {4, 7} {0, 15} {9, 10}
{1, 3, 4, 7} {0, 9, 10, 15}
{0, 1, 3, 4, 7, 9, 10, 15}
V={0, 1, 3, 4, 7, 9, 10, 15}

Esempio 2

V={1, 3, 7, 4, 15, 0, 9, 10, 8, 2}

Gli indici Inf e Sup assumono i valori

1...10
1..5 6...10
1...3 4...5 6...8 9...10
1...2 3...3 4...4 5...5 6...7 8...8 9...9 10...10
1...1 2...2 6...6 7...7

e il vettore diventa

{1, 3, 7, 4, 15, 0, 9, 10, 8, 2}
{1, 3, 7, 4, 15} {0, 9, 10, 8, 2}
{1, 3, 7} {4, 15} {0, 9, 10} {8, 2}
{1, 3} {7} {4} {15} {0, 9} {10} {8} {2}
{1} {3} {0} {9}
{1, 3} {0, 9}
{1, 3} {4, 7} {0, 15} {9, 10}
{1, 3, 4, 7} {0, 9, 10, 15}
{0, 1, 2, 3, 4, 7, 8, 9, 10, 15}
V={0, 1, 2, 3, 4, 7, 8, 9, 10, 15}

Merge Sort - ApPuNtIdIuNiNfOrMaTiCo

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

Precedente
SUPERIORE
Successiva