Forum pour les élèves lycéens
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Aliexpress : codes promo valables sur tout le site
Voir le deal

Tri Rapide

Aller en bas

Tri Rapide Empty Tri Rapide

Message par Invité Lun 1 Avr - 21:46

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 debbegin
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 ipermuter(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.

Invité
Invité


Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par haiethem Mar 2 Avr - 17:35

Ton code manque quelques caractères !!!
haiethem
haiethem

Messages : 485
Points : 26853
Réputation : 3
Date d'inscription : 08/11/2010
Age : 47

http://www.gdiri.info

Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par Invité Mar 2 Avr - 19:10

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.

Invité
Invité


Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par Invité Mar 2 Avr - 19:13

je ne sais pas :/ quand je le coller ici il ya certains caractères qui ne pas être collés

Invité
Invité


Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par haiethem Jeu 4 Avr - 8:24

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.
haiethem
haiethem

Messages : 485
Points : 26853
Réputation : 3
Date d'inscription : 08/11/2010
Age : 47

http://www.gdiri.info

Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par haiethem Jeu 4 Avr - 8:25

Ah j'ai trouvé ton code complet sur ton portail facebook.
haiethem
haiethem

Messages : 485
Points : 26853
Réputation : 3
Date d'inscription : 08/11/2010
Age : 47

http://www.gdiri.info

Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par Invité Jeu 4 Avr - 13:21

ah c bon merci

Invité
Invité


Revenir en haut Aller en bas

Tri Rapide Empty Re: Tri Rapide

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum