Création
d'entreprise
Posez votre question Signaler

Algo tri shell+ tri rapide+ tri fusion

sydney - Dernière réponse le 22 janv. 2010 à 22:50
Bonjour,
svp donner moi les algorithmes des tri suivants:
*tri shell
*tri rapide
*tri fusion
as soon as possible please.
Lire la suite 

Algo tri shell+ tri rapide+ tri fusion »

4 réponses
Réponse
+4
moins plus
Cherche un peu, fainéasse...


=)
Ajouter un commentaire
Réponse
+2
moins plus
program principal

pas:=pas_max(n);


procedure tri_shell(var t:tab;n,pas:integer);
begin
repeat
pas:=pas div 3;
for i:= pas to n do
begin
aux:=t[i];
j:=i;
while (t[j-pas]>aux and j>pas) do
begin
t[j]:=t[j-pas];
j:=j-pas;
end;
t[j]:=aux;
end;
until pas=1;
end.

#****pas max******#

function pas_max(n:integer):integer;
begin
pas:=1;
repeat
pas:=3*pas+1;
until pas >=n;
end.


c mieux pour voux
vive le RoCk **********metal*******
meher - 22 janv. 2010 à 22:50
program tri;
uses wincrt;

type
tab=array [1..100] of integer;

var
n:integer;
T:tab;

procedure saisie_n(var n:integer);
begin

if(n<=0) then saisie_n(n);

end;

procedure remplir(var t :tab;n:integer);
begin

if n=1 then readln (T[n])
else remplir(t,n-1);

end;

function Recherche_min(i,n:integer;T:tab):integer;
begin
if(n=1) then Recherche_min:=T[1]
else if(i>n) then
Recherche_min:=Recherche_min(i+1,n,T);
end;


procedure permuter(var x,y:integer);
var aux:integer;
begin
aux:=x;
x:=y;
y:=aux;
end;

procedure decaler(var t:tab;aux,p:integer);
begin

while((p>1) and(aux>T[p-1])) do
begin
T[p]:=T[p-1];
p:=p-1;
end;

end;

procedure tri_sel(i,n:integer;var t :tab);
var min:integer;
begin

min:=Recherche_min(i,n,t);
if(min<>i) then permuter(T[i],T[min]);
if (i+1<>n) then tri_sel(i+1,n,T);

end;

procedure tri_bul(var t :tab;n:integer);
var i:integer;
begin

if (n>1) then begin
for i:=2 to n do
if (T[i]>T[i-1]) then
permuter (T[i],T[i-1]);
end;
tri_bul(T,n-1);

end;

procedure tri_inser(var t :tab;n,i:integer);
var aux,j:integer;
begin

if(i<=n) then begin
aux:=T[i];
j:=i;
decaler(T,aux,i);
T[j]:=T[j-1];
tri_inser(T,n,i+1);
end;

end;
{h est mle pas **}
procedure tri_shell(var t :tab;n,h:integer);
Var aux,i : integer;
begin
If h > 0 Then
Begin
If n > h Then
begin
Tri_Shell (t,n - h,h);
If t[n] < t[n - h] Then
Begin
aux:= t[n];
i := n;
Repeat
t[i] := t[i - h];
i := i - h;
Until (i = h) Or (aux > t[i - h]);
t[i] := aux;
End;
End;
Tri_Shell (t,n,h Div 3);
End;
End;


procedure affichage(t :tab;n:integer);
begin

if n=1 then writeln (T[1])

else affichage(t,n-1);

end;

begin
saisie_n(n);
remplir(T,n);
writeln('*Les élements de tableau avant le tri *');
affichage(T,n);
writeln('*Les élements de tableau aprés le tri sélection*');
tri_sel(1,n,T);
affichage(T,n);
writeln('*Les élements de tableau aprés le tri à bulles *');
affichage(T,n);
writeln('*Les élements de tableau aprés le tri insertion*');
affichage(t,n);
writeln('*Les élements de tableau aprés le tri shell *');
tri_shell(t,n,5);
affichage(t,n);
end.
Ajouter un commentaire
Réponse
+0
moins plus
procedure tri_rapid(var t:tab;g,d:integer);
begin
if g<d
then
begin
pivot:=g;
p:=g;
end;
for i:=pivot+1 to d do
begin
if t[i]<t[pivot]
then
p:=p+1;
if i<>p
then
pemut(t[i],t[p]);
end;
permut(t[p],t[pivot]);
tri_rapide(t,g,p-1);
tri_rapide(t,p+1,g);
end;
end.

c'est mieux pour vous
Ajouter un commentaire
Ce document intitulé « algo tri shell+ tri rapide+ tri fusion » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?