Tri Rapide
Page 1 sur 1
Tri Rapide
program exercice;
uses wincrt;
type
tab=array [1..25] of integer;
var
t:tab;
deb,fin,i,n:integer;
procedure saisirn(var n :integer);
begin
repeat
writeln('entrer le taille du tableau');
readln(n);
until(n>0);
end;
procedure remplir(var t:tab; n:integer);
var
i:integer;
begin
randomize;
for i:=1 to n do
t[i]:=random(100)+1;
for i:=1 to n do
write(t[i],'|');
end;
function nbrmax(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] > a then
nbr:=nbr+1;
end;
nbrmax:=nbr;
end;
function nbrmin(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] < a then
nbr:=nbr+1;
end;
nbrmin:=nbr;
end;
function mediane(t:tab;a,b:integer):integer;
var
i,max,min:integer;
begin
i:=a;
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
while (i<=b) and (max-min>1) do
begin
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
i:=i+1;
end;
mediane:=i;
end;
procedure permuter(var a,b:integer);
var
aux:integer;
begin
aux:=a;
a:=b;
b:=aux;
end;
procedure tri_rapide(var t:tab; deb,fin:integer);
var
i,j,p:integer;
begin
if deb begin
p:=mediane(t,deb,fin);
i:=deb;
j:=fin;
while i<=j do
begin
while (i<=fin) and (t[p]>=t[i]) do inc(i);
while (j>=deb) and (t[p] if i permuter(t[i],t[j]);
end;
permuter(t[j],t[p]);
tri_rapide(t,1,j-1);
tri_rapide(t,i,fin);
end;
end;
begin
saisirn(n);
remplir(t,n);
tri_rapide(t,1,n);
writeln;
for i:=1 to n do
write(t[i],'|');
end.
uses wincrt;
type
tab=array [1..25] of integer;
var
t:tab;
deb,fin,i,n:integer;
procedure saisirn(var n :integer);
begin
repeat
writeln('entrer le taille du tableau');
readln(n);
until(n>0);
end;
procedure remplir(var t:tab; n:integer);
var
i:integer;
begin
randomize;
for i:=1 to n do
t[i]:=random(100)+1;
for i:=1 to n do
write(t[i],'|');
end;
function nbrmax(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] > a then
nbr:=nbr+1;
end;
nbrmax:=nbr;
end;
function nbrmin(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] < a then
nbr:=nbr+1;
end;
nbrmin:=nbr;
end;
function mediane(t:tab;a,b:integer):integer;
var
i,max,min:integer;
begin
i:=a;
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
while (i<=b) and (max-min>1) do
begin
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
i:=i+1;
end;
mediane:=i;
end;
procedure permuter(var a,b:integer);
var
aux:integer;
begin
aux:=a;
a:=b;
b:=aux;
end;
procedure tri_rapide(var t:tab; deb,fin:integer);
var
i,j,p:integer;
begin
if deb
p:=mediane(t,deb,fin);
i:=deb;
j:=fin;
while i<=j do
begin
while (i<=fin) and (t[p]>=t[i]) do inc(i);
while (j>=deb) and (t[p]
end;
permuter(t[j],t[p]);
tri_rapide(t,1,j-1);
tri_rapide(t,i,fin);
end;
end;
begin
saisirn(n);
remplir(t,n);
tri_rapide(t,1,n);
writeln;
for i:=1 to n do
write(t[i],'|');
end.
Invité- Invité
Re: Tri Rapide
program exercice;
uses wincrt;
type
tab=array [1..25] of integer;
var
t:tab;
deb,fin,i,n:integer;
procedure saisirn(var n :integer);
begin
repeat
writeln('entrer le taille du tableau');
readln(n);
until(n>0);
end;
procedure remplir(var t:tab; n:integer);
var
i:integer;
begin
randomize;
for i:=1 to n do
t[i]:=random(100)+1;
for i:=1 to n do
write(t[i],'|');
end;
function nbrmax(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] > a then
nbr:=nbr+1;
end;
nbrmax:=nbr;
end;
function nbrmin(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] < a then
nbr:=nbr+1;
end;
nbrmin:=nbr;
end;
function mediane(t:tab;a,b:integer):integer;
var
i,max,min:integer;
begin
i:=a;
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
while (i<=b) and (max-min>1) do
begin
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
i:=i+1;
end;
mediane:=i;
end;
procedure permuter(var a,b:integer);
var
aux:integer;
begin
aux:=a;
a:=b;
b:=aux;
end;
procedure tri_rapide(var t:tab; deb,fin:integer);
var
i,j,p:integer;
begin
if deb begin
p:=mediane(t,deb,fin);
i:=deb;
j:=fin;
while i<=j do
begin
while (i<=fin) and (t[p]>=t[i]) do inc(i);
while (j>=deb) and (t[p] if i permuter(t[i],t[j]);
end;
permuter(t[j],t[p]);
tri_rapide(t,1,j-1);
tri_rapide(t,i,fin);
end;
end;
begin
saisirn(n);
remplir(t,n);
tri_rapide(t,1,n);
writeln;
for i:=1 to n do
write(t[i],'|');
end.
uses wincrt;
type
tab=array [1..25] of integer;
var
t:tab;
deb,fin,i,n:integer;
procedure saisirn(var n :integer);
begin
repeat
writeln('entrer le taille du tableau');
readln(n);
until(n>0);
end;
procedure remplir(var t:tab; n:integer);
var
i:integer;
begin
randomize;
for i:=1 to n do
t[i]:=random(100)+1;
for i:=1 to n do
write(t[i],'|');
end;
function nbrmax(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] > a then
nbr:=nbr+1;
end;
nbrmax:=nbr;
end;
function nbrmin(t:tab;a,b,c:integer):integer;
var
nbr,i:integer;
begin
nbr:=0;
for i:= b to c do
begin
if t[i] < a then
nbr:=nbr+1;
end;
nbrmin:=nbr;
end;
function mediane(t:tab;a,b:integer):integer;
var
i,max,min:integer;
begin
i:=a;
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
while (i<=b) and (max-min>1) do
begin
max:=nbrmax(t,t[i],i+1,b);
min:=nbrmin(t,t[i],i+1,b);
i:=i+1;
end;
mediane:=i;
end;
procedure permuter(var a,b:integer);
var
aux:integer;
begin
aux:=a;
a:=b;
b:=aux;
end;
procedure tri_rapide(var t:tab; deb,fin:integer);
var
i,j,p:integer;
begin
if deb
p:=mediane(t,deb,fin);
i:=deb;
j:=fin;
while i<=j do
begin
while (i<=fin) and (t[p]>=t[i]) do inc(i);
while (j>=deb) and (t[p]
end;
permuter(t[j],t[p]);
tri_rapide(t,1,j-1);
tri_rapide(t,i,fin);
end;
end;
begin
saisirn(n);
remplir(t,n);
tri_rapide(t,1,n);
writeln;
for i:=1 to n do
write(t[i],'|');
end.
Invité- Invité
Re: Tri Rapide
je ne sais pas :/ quand je le coller ici il ya certains caractères qui ne pas être collés
Invité- Invité
Re: Tri Rapide
Pourquoi les fonctions nbmax et nbmin ?
Si tu veux chercher la mediane du tableau il y a une méthode plus simple. Il suffit de chercher dont n div 2 éléments sont inférieurs.
Si tu veux chercher la mediane du tableau il y a une méthode plus simple. Il suffit de chercher dont n div 2 éléments sont inférieurs.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|