Вот процедура , которая сортирует массив прямым выбором и считает число сравнений и число перестановок, помогите плз сделать процедуру для метода прямого включения .
procedure vybor(a:tm);
begin
peres:=0;
srav:=0;
for i:= 1 to n-1 do
begin
k := i;
temp := a [i];
for j := i+1 to n do
begin
inc(srav);
if a [j] < temp then
begin
k := j;
temp := a [j];
end;
end;
a [k] := a [i];
if k <> i then inc(peres);
a [i] := temp;
end;
write('Sortirovka');
textcolor(red);
for i:=1 to n do
write(a[i],' ');
writeln;
textcolor(white);
writeln('Chislo perestanovok = ',peres);
writeln('Chislo sravneniy = ',srav);
readln;
end;
если я правильно понимаю, метод прямого включения - то же, что и простые вставки?
const n=7;
type massiv=array [1..n] of integer;
procedure vstavka(var ar:massiv; n:integer);
var i, j, buf: integer;
begin
for i:=1 to n do
begin
buf:=ar[i];
j:=i-1;
while (buf<ar[j]) and (j>=0) do
begin
ar[j+1]:=ar[j];
j:=j-1;
end;
ar[j+1]:=buf;
end;
end;
а как добавить сюда счетчик для сравнений идля перестановок ????
Здесь про это говорилось: http://forum.pascal.net.ru/index.php?s=&showtopic=12926&view=findpost&p=75441
(то же самое - для любого другого метода...)