1 réponse
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;
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;