Quick sort

Un algoritmo di ordinamento

  • molto complicato: ricorsivo e difficile da ricordare
  • ma ottimo: è quasi sempre molto veloce…
Procedure QUICKSORT(var V: Vettore; Inf, Sup: Integer);
Var
   i, j: Integer;
   Perno: Elemento;
Begin1
   If(Inf < Sup) Then
      Begin
         i:=Inf;
         j:=Sup;
         Perno:=V[(Inf+Sup) DIV 2];
         Repeat
            While(V[i] < Perno) Do
               Inc(i);
            While(Perno < V[j]) Do
               Dec(j);
            If(i <= j) then
               Begin
                  SCAMBIA(V[i], V[j]);
                  Inc(i);
                  Dec(j);
               End;
         Until(I > J);
         QUICKSORT(V, Inf, j);
         QUICKSORT(V, i, Sup);
      End;
End;