Tri par tas

Fermé
offa Messages postés 21 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 23 avril 2008 - 25 janv. 2008 à 11:48
offa Messages postés 21 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 23 avril 2008 - 27 janv. 2008 à 22:14
salut,
si vous savez comment resoudre le pb de tri par tas en pascal aidez moi SVP

1 réponse

offa Messages postés 21 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 23 avril 2008 8
27 janv. 2008 à 22:14
salut,
J'ai essayé pour le tri par tas et j'ai trouvé cette solution mais ca marche pas svp de l'aide c'est urgent

procedure insertionTas(var t:tab;v:integer);
var i,p: integer ;
begin
n:=n+1;
t[n]:=v;
i:=n;
while (i<= 1) and (t[(i div 2)-1]<= v) do
begin
t[i]:=t[(i div 2)-1];
i:=(i div 2)-1;
end;
t[i]:=v;
end;
function supprimerMax(var t:tab;n:integer):integer;
var i,j,max,v:integer;

begin
max:=t[1];
t[1]:=t[n];
n:=n-1;
v:=t[1];
while (i<=(n div 1)) do
begin
j:=i+i;
if (j<n) and (t[j]<t[j+1] )
then j:=j+1;

t[i]:=t[j];
i:=j;
end;
t[i]:=v;
end;
procedure triParTas( var t:tab;n:integer);
var i:integer;
begin
for i:=1 to n do
begin
insertionTas(t,t[i]);
end;

for i:=n to 0 do
begin
t[i]:=supprimerMax(t,n);
end;
end;
0