program trirapide;
uses crt;
type
tab = array [1..100] of integer;
var
t : tab;
n : integer;
procedure remplissage (var t : tab ; var n : integer );
var
i:integer ;
begin
repeat
writeln ('donner le taille de tableau ');
readln(n);
until (n > 0) and (n <= 100);
for i := 1 to n do
begin
writeln ('t[',i,']');
readln(t[i]);
end;
end ;
procedure tri_rapid (var t : tab ; pivot : integer ; n : integer);
var
aux, sup, inf : integer;
begin
if n - pivot > 0 then
begin
inf := pivot + 1;
sup := n;
repeat
while (inf < sup) and (t[pivot] > t[inf]) do
inf := inf + 1;
while (inf <= sup) and (t[pivot] <= t[sup]) do
sup := sup - 1;
if (inf < sup) then
begin
aux := t[inf];
t[inf] := t[sup];
t[sup] := aux;
end;
until (sup<inf);
aux := t[pivot];
t[pivot] := t[sup];
t[sup] := aux;
tri_rapid (t, pivot, sup-1);
tri_rapid (t, sup+1, n);
end;
end;
procedure affichage (t : tab ; n : integer);
var
i : integer;
begin
for i := 1 to n do
writeln(t[i]);
end;
begin
remplissage (t, n);
tri_rapid (t, 1, n);
affichage (t, n);
end.
cHJvZ3JhbQkJdHJpcmFwaWRlOwp1c2VzCQljcnQ7Cgp0eXBlCiAgICB0YWIgPSBhcnJheSBbMS4uMTAwXSBvZiBpbnRlZ2VyOwoKdmFyCiAgICB0IDogdGFiOwogICAgbiA6IGludGVnZXI7Cgpwcm9jZWR1cmUgcmVtcGxpc3NhZ2UgKHZhciB0IDogdGFiIDsgdmFyIG4gOiBpbnRlZ2VyICk7CnZhcgogICAgaTppbnRlZ2VyIDsKYmVnaW4KICAgIHJlcGVhdAogICAgICAgIHdyaXRlbG4gKCdkb25uZXIgbGUgdGFpbGxlIGRlIHRhYmxlYXUgJyk7CiAgICAgICAgcmVhZGxuKG4pOwogICAgdW50aWwgKG4gPiAwKSBhbmQgKG4gPD0gMTAwKTsKICAgIGZvciBpIDo9IDEgdG8gbiBkbwogICAgYmVnaW4KICAgICAgICB3cml0ZWxuICgndFsnLGksJ10nKTsKICAgICAgICByZWFkbG4odFtpXSk7CiAgICBlbmQ7CmVuZCA7Cgpwcm9jZWR1cmUgdHJpX3JhcGlkICh2YXIgdCA6IHRhYiA7IHBpdm90IDogaW50ZWdlciA7IG4gOiBpbnRlZ2VyKTsKdmFyCiAgICBhdXgsIHN1cCwgaW5mIDogaW50ZWdlcjsKYmVnaW4KICAgIGlmIG4gLSBwaXZvdCA+IDAgdGhlbgogICAgYmVnaW4KICAgICAgICBpbmYgOj0gcGl2b3QgKyAxOwogICAgICAgIHN1cCA6PSBuOwogICAgICAgIHJlcGVhdAogICAgICAgICAgICB3aGlsZSAoaW5mIDwgc3VwKSBhbmQgKHRbcGl2b3RdID4gdFtpbmZdKSBkbwogICAgICAgICAgICAgICAgaW5mIDo9IGluZiArIDE7CiAgICAgICAgICAgIHdoaWxlIChpbmYgPD0gc3VwKSBhbmQgKHRbcGl2b3RdIDw9IHRbc3VwXSkgZG8KICAgICAgICAgICAgICAgIHN1cCA6PSBzdXAgLSAxOwogICAgICAgICAgICBpZiAoaW5mIDwgc3VwKSB0aGVuCiAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICBhdXggOj0gdFtpbmZdOwogICAgICAgICAgICAgICAgdFtpbmZdIDo9IHRbc3VwXTsKICAgICAgICAgICAgICAgIHRbc3VwXSA6PSBhdXg7CiAgICAgICAgICAgIGVuZDsKICAgICAgICB1bnRpbCAoc3VwPGluZik7CiAgICBhdXggOj0gdFtwaXZvdF07CiAgICB0W3Bpdm90XSA6PSB0W3N1cF07CiAgICB0W3N1cF0gOj0gYXV4OwogICAgdHJpX3JhcGlkICh0LCBwaXZvdCwgc3VwLTEpOwogICAgdHJpX3JhcGlkICh0LCBzdXArMSwgbik7CiAgICBlbmQ7CmVuZDsKCnByb2NlZHVyZSBhZmZpY2hhZ2UgKHQgOiB0YWIgOyBuIDogaW50ZWdlcik7CnZhcgogICAgaSA6IGludGVnZXI7CmJlZ2luCiAgICBmb3IgaSA6PSAxIHRvIG4gZG8KICAgICAgICB3cml0ZWxuKHRbaV0pOwplbmQ7CgpiZWdpbgogICAgcmVtcGxpc3NhZ2UgKHQsIG4pOwogICAgdHJpX3JhcGlkICh0LCAxLCBuKTsKICAgIGFmZmljaGFnZSAodCwgbik7CmVuZC4KIA==