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 41 42
| procedure TForm1.Button2Click(Sender: TObject);
begin
TriRapide(1,stringgrid1.RowCount-2);
end;
Function TriPartition (Grid1: TStringGrid; premier , dernier : integer):integer ;
var
i : integer;
j : Integer;
pivot, temp : string;
begin
with Grid1 do
begin
i := premier-1;
j := dernier;
pivot := cells[0,dernier];
repeat
repeat i := i+1 until Cells[0,i] >= pivot;
repeat j := j-1 until Cells[0,j] <= pivot;
temp :=rows[i].text;
rows[i].text :=rows[j].text;
rows[j].text :=temp;
until j <= i;
rows[j].text := rows[i].text;
rows[i].text := rows[dernier].text;
rows[dernier].text := temp;
result := i;
end;
end;
procedure TForm1.TriRapide( premier, dernier : integer);
var i: Integer;
begin
if dernier>premier then
begin
i := TriPartition(StringGrid1, premier , dernier );
TriRapide( premier , i-1 );
TriRapide( i+1 , dernier );
end
end; |
Partager