осуществляющая сортировку методом прямого включения
k1:=k1+1;
if a[j - 1] < a[j] then
begin
k:=k+1;
{обмена содержимым элементов массива a[j-1] и a[j]
с помощью переменной x}
x := a[j - 1];
a[j - 1] := a[j];
a[j] := x;
end;
end;
end;
for i:=1 to high(a) do
a1[i]:=a[i];
end;
{*********************************************************}
{*** процедура, осуществляющая сортировку методом прямого включения **}
{*********************************************************}
procedure pr_ins(a:array of integer;var a1:array of integer;var k,k1:longint);
var
{i,j - счетчики в циклах}
i,j:integer;
{x - переменная для осуществления обмена между a[i] и a[j]}
x:integer;
begin
{k1 - переменная для подсчета количества сравнений
k - переменная для подсчета количества перемещений}
k:=0;k1:=0;
for i := 1 to high(a) do
begin
x := a[i];
for j := i - 1 downto 0 do
begin
k1:=k1+1;
if x > a[j] then
begin
k:=k+1;
{обмена содержимым элементов массива a[j+1] и a[j]
с помощью переменной x}
a[j + 1] := a[j];
a[j]:=x;
end;
end;
end;
for i:=0 to high(a) do
a1[i]:=a[i];
end;
{**********************************************************
процедура, осуществляющая исследование методов сортировок для
*********** заданного массива чисел ***********************
**********************************************************}
procedure make(x1,n:integer;a,a1:array of integer;k:byte);
var
{количество перестановок}
kol_pr_ins, kol_pr_obm,kol_pr_choose:longint;
{количество сравнений}
kol_sr_ins, kol_sr_obm,kol_sr_choose:longint;
s:string;
begin
case k of
1:s:='упорядоченных по возрастанию';
2:s:='неупорядоченных (случайных)';
3:s:='упорядоченных по убыванию';
end;
{--------метод прямого включения---------}
pr_ins(a,a1,kol_pr_ins,kol_sr_ins);
{--------метод прямого обмена (метод пузырька)--------}
Содержание Назад Вперед