1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
bool MaClasse::QuickSort(int __fastcall Gauche, int __fastcall Droite)
{
bool Fini = false;
if(Droite > Gauche)
{
r = Droite;
l = Gauche;
q = l;
p = r;
AnsiString v = *((AnsiString *)Tableau->Items[r]);
//AnsiString est un type qui permet de manipuler des chaines de caractères
while(p > q)
{
while( (CompareText(*((AnsiString *)Tableau->Items[p]), v) >= 0) && (p > l) )
//CompareText est une fonction de borland
{
p--;
}
while( (CompareText(*((AnsiString *)Tableau->Items[q]), v) <= 0) && (q < r) )
{
q++;
}
if(p > q)
{
Liste_Lignes->Exchange(p, q);
//échange la position des pointeurs
}
}
Tableau->Exchange(q, r);
//échange la position des pointeurs
}
else
{
Fini = true;
}
return Fini;
} |