Модуль
unit Sort;
interface
uses crt;
const max=100;
type mas=array [1..max] of integer;
procedure Vvod(var x:mas;var n:integer);
procedure Vyvod(var x:mas;n:integer);
procedure InsertSort(var x:mas;n:integer);
implementation
procedure Vvod;
var i:integer;
begin
repeat
write('Размер массива от 2 до 100: ');
readln(n);
until n in [2..100];
writeln('Введите ',n,' элементов массива:');
for i:=1 to n do
begin
write('el[',i,']=');
readln(x[i]);
end;
clrscr;
end;
procedure Vyvod;
var i:integer;
begin
for i:=1 to n do
write(x[i],' ');
writeln;
writeln;
end;
procedure InsertSort;
var i, j, buf:integer;
begin
for i:=2 to N do
begin
buf:=x[i];
j:=i-1;
while (j>=1) and (x[j]>buf) do
{это по возрастанию, по убыванию (x[j]<buf)}
begin
x[j+1]:=x[j];
j:=j-1;
end;
x[j+1]:=buf;
end;
end;
end.
Программа
uses crt,Sort;
var a:mas;
n:integer;
begin
clrscr;
Vvod(a,n);
writeln('Исходный массив:');
Vyvod(a,n);
InsertSort(a,n);
writeln('Результат:');
Vyvod(a,n);
readln
end.