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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| program tri_rapide_Jason;
uses crt;
type
tab = array [1..100] of integer;
var
T:tab;
x:integer;
{******************************************************************}
procedure taille(var n:integer);
begin
repeat
writeln('donner la taille');
read(n);
{******************************************************************} until n in [1..100];
end;
procedure saisie(var T:tab;n:integer);
var
i: integer;
begin
for i:=1 to n do
begin
write('T[',i,']=');
readln(T[i]);
end;
end;
{******************************************************************}
{La procedure du tri rapide qui a un prob}
procedure tri(var T:tab; a:integer; b:integer);
var
pivot,j,i,k,aux:integer;
begin
if (a<b) then
begin
pivot := T[a];
writeln('le pivot est ', pivot);{message pour avoir une idée sur l'erreur}
for i:= a+1 to b do
begin
if (T[i] >= pivot) then
begin
j:=b+1;
repeat
j:=j-1;
until (T[j] < pivot) or (i=j);
if (i <> j) then
begin
aux:= T[i];
T[i]:=T[j];
T[j]:= aux;
end;
end;
end;
k:= b;
repeat
k:=k-1;
until (T[k] < pivot) or (k=1);
if (k <> 1) then
begin
T[1] := T[k];
T[k] := pivot;
writeln('le pivot est à la position:',k);{message pour avoir une idée sur l'erreur}
end;
tri (T,a,k-1);
tri (T,k+1,b);
end;
end;
{******************************************************************}
procedure affichage(var T:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do
writeln (T[i]);
end;
{******************************************************************}
begin
taille (x);
saisie(T,x);
tri(T,1,x);
affichage(T,x);
readln();
end. |
Partager