1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
procedure tri_insertion (var t:tab;n:integer);
var
aux:livre;
p,i,j:integer;
begin;
while p<n do
p:=3*p+1 ;
while p>1 do
begin
p:=p div 3;
for i:=p+1 to n do
aux:=t[i];
j:=i-p;
while (j>0) and (t[j].nom>aux.nom) do
begin
t[j+p]:=t[j];
j:=j-p;
end;
end;
t[j+p]:=aux;
end;
procedure tri (var f:fiche);
var
n,i:integer;
t:tab;
begin
reset(f);
i:=0;
while not(EOF(f)) do
begin
i:=i+1;
read(f,t[i]);
end;
n:=i;
Tri_insertion(t,n);
reset(f);
for i:=1 to n do
write(f,t[i])
end; |
Partager