Tri Rapide

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tri Rapide

Message par Mondher le 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.

Mondher

Messages : 57
Points : 9146
Réputation : 0
Date d'inscription : 24/09/2012
Age : 22
Localisation : Tunisie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tri Rapide

Message par haiethem le Mar 2 Avr - 17:35

Ton code manque quelques caractères !!!

_________________
=================================
Haiethem Elguediri
Lycée Secondaire Mareth
+21652084191
+21652906038
+21631139805
+21675321050
haiethem@gmail.com
www.haiethem.tk
avatar
haiethem

Messages : 419
Points : 14615
Réputation : 3
Date d'inscription : 08/11/2010
Age : 41

Voir le profil de l'utilisateur http://www.haiethem.tk

Revenir en haut Aller en bas

Re: Tri Rapide

Message par Mondher le 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.

Mondher

Messages : 57
Points : 9146
Réputation : 0
Date d'inscription : 24/09/2012
Age : 22
Localisation : Tunisie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tri Rapide

Message par Mondher le 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

Mondher

Messages : 57
Points : 9146
Réputation : 0
Date d'inscription : 24/09/2012
Age : 22
Localisation : Tunisie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tri Rapide

Message par Mondher le Mar 2 Avr - 19:17

https://www.facebook.com/Midou.best.info/posts/450895441651690

Mondher

Messages : 57
Points : 9146
Réputation : 0
Date d'inscription : 24/09/2012
Age : 22
Localisation : Tunisie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tri Rapide

Message par haiethem le 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 Elguediri
Lycée Secondaire Mareth
+21652084191
+21652906038
+21631139805
+21675321050
haiethem@gmail.com
www.haiethem.tk
avatar
haiethem

Messages : 419
Points : 14615
Réputation : 3
Date d'inscription : 08/11/2010
Age : 41

Voir le profil de l'utilisateur http://www.haiethem.tk

Revenir en haut Aller en bas

Re: Tri Rapide

Message par haiethem le Jeu 4 Avr - 8:25

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

_________________
=================================
Haiethem Elguediri
Lycée Secondaire Mareth
+21652084191
+21652906038
+21631139805
+21675321050
haiethem@gmail.com
www.haiethem.tk
avatar
haiethem

Messages : 419
Points : 14615
Réputation : 3
Date d'inscription : 08/11/2010
Age : 41

Voir le profil de l'utilisateur http://www.haiethem.tk

Revenir en haut Aller en bas

Re: Tri Rapide

Message par Mondher le Jeu 4 Avr - 13:21

ah c bon merci

Mondher

Messages : 57
Points : 9146
Réputation : 0
Date d'inscription : 24/09/2012
Age : 22
Localisation : Tunisie

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Tri Rapide

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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