Procedure Ordenar(A:LNaturales); Var i,j:longint; aux:qword; intv:longword; //intervalo Begin intv:=length(A) div 2; //intervalo inicial While intv>0 do // Mientras intervalo >0 Begin //algoritmo de inserciĆ³n, por intervalos for i:=intv to high(A) do // Desde el intervalo hasta el final Begin aux:=A[i]; j:=i-intv; while ((j>=0) and (auxA<[j])) do Begin A[j+intv]:=A[j]; j:=j-intv End; A[j+intv]:=aux End; //nuevo intervalo intv:=intv div 2 End; End;