Una dintre problemele obișnuite în programare este de a sorta o serie de valori într-o anumită ordine (crescătoare sau descendentă).
Deși există numeroși algoritmi de sortare „standard”, QuickSort este unul dintre cele mai rapide. Quicksort sortează folosind un împărțiți și cuceriți strategia pentru a împărți o listă în două sub-liste.
Conceptul de bază este să alegeți unul dintre elementele din tablou, numit a pivot. În jurul pivotului, vor fi reorganizate alte elemente. Totul decât pivotul este mutat în stânga pivotului - în partiția din stânga. Totul mai mare decât pivotul merge în partiția potrivită. În acest moment, fiecare partiție este „sortată rapid” recursiv..
Iată algoritmul QuickSort implementat în Delphi:
procedură Sortare rapida(var A: o serie de Întreg; iLo, iHi: Integer);
var
Lo, Bună, Pivot, T: Integer;
începe
Lo: = iLo;
Bună: = iHi;
Pivot: = A [(Lo + Hi) div 2];
repeta
in timp ce A [Lo] < Pivot do Inc (Lo);
in timp ce A [Bună]> Pivot do Dec (Bună);
dacă iată <= Hi apoi
începe
T: = A [Lo];
A [Lo]: = A [Bună];
A [Bună]: = T;
Inc (Lo);
Dec (Bună);
Sfârșit;
pana cand Lo> Bună;
dacă Bună> iLo apoi QuickSort (A, iLo, Bună);
dacă iată < iHi apoi QuickSort (A, Lo, iHi);
Sfârșit;
utilizare:
var
intArray: o serie de întreg;
începe
SetLength (intArray, 10);
// Adăugați valori la intArray
intArray [0]: = 2007;
...
intArray [9]: = 1973;
//fel
QuickSort (intArray, Low (intArray), High (intArray));
Notă: în practică, QuickSort devine foarte lent atunci când tabloul trecut la acesta este deja aproape de a fi sortat.
Există un program demonstrativ care se livrează cu Delphi, numit „thrddemo” în folderul „Fire”, care arată două algoritmi de sortare suplimentari: Sortare cu bule și Sortare selecție.