TRI Fusion
2 participants
Page 1 sur 1
TRI Fusion
Salut
voici une méthode de tri fusion
uses wincrt;
type tab=array[1..100]of integer;
var
t:tab;
n:integer;
procedure saisie(var t:tab;var n:integer);
var
i:integer;
begin
write('Donner n = ');readln(n);
randomize;
for i:=1 to n do
t[i]:=random(100);
end;
procedure affiche(t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do
writeln('t[',i,']=',t[i]);
end;
PROCEDURE tri_fusion(var M:tab;d,f:integer);
VAR
mil:integer;
PROCEDURE fusionner(var M:tab;d,mil,f:integer);
VAR
P:tab;
i,j,k,l:integer;
BEGIN
i:=d;
j:=mil+1;
k:=d;
while (i<=mil) and (j<=f) do
begin
if M[i]<M[j] then
begin
P[k]:=M[i];
i:=i+1;
end
else
begin
P[k]:=M[j];
j:=j+1;
end;
k:=k+1;
end;
if (i>mil) then
for l:=j to f do
begin
P[k]:=M[l];
k:=k+1;
end
else
for l:=i to mil do
begin
P[k]:=M[l];
k:=k+1;
end;
for l:=d to f do
M[l]:=P[l];
END;
BEGIN
if (d<f) then
begin
mil:=(d+f) div 2;
tri_fusion(M,d,mil);
tri_fusion(M,mil+1,f);
fusionner(M,d,mil,f);
end;
END;
begin
saisie(t,n);
writeln('Le tableau non trié');
affiche(t,n);
writeln;
writeln('Le tableau trié');
tri_fusion(t,1,n);
affiche(t,n);
end.
voici une méthode de tri fusion
uses wincrt;
type tab=array[1..100]of integer;
var
t:tab;
n:integer;
procedure saisie(var t:tab;var n:integer);
var
i:integer;
begin
write('Donner n = ');readln(n);
randomize;
for i:=1 to n do
t[i]:=random(100);
end;
procedure affiche(t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do
writeln('t[',i,']=',t[i]);
end;
PROCEDURE tri_fusion(var M:tab;d,f:integer);
VAR
mil:integer;
PROCEDURE fusionner(var M:tab;d,mil,f:integer);
VAR
P:tab;
i,j,k,l:integer;
BEGIN
i:=d;
j:=mil+1;
k:=d;
while (i<=mil) and (j<=f) do
begin
if M[i]<M[j] then
begin
P[k]:=M[i];
i:=i+1;
end
else
begin
P[k]:=M[j];
j:=j+1;
end;
k:=k+1;
end;
if (i>mil) then
for l:=j to f do
begin
P[k]:=M[l];
k:=k+1;
end
else
for l:=i to mil do
begin
P[k]:=M[l];
k:=k+1;
end;
for l:=d to f do
M[l]:=P[l];
END;
BEGIN
if (d<f) then
begin
mil:=(d+f) div 2;
tri_fusion(M,d,mil);
tri_fusion(M,mil+1,f);
fusionner(M,d,mil,f);
end;
END;
begin
saisie(t,n);
writeln('Le tableau non trié');
affiche(t,n);
writeln;
writeln('Le tableau trié');
tri_fusion(t,1,n);
affiche(t,n);
end.
Ilyes KHAILI- Messages : 24
Date d'inscription : 13/11/2008
Age : 34
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|