Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ сортировка прямым включением

Автор: -Катя- 22.12.2006 21:59

Вот процедура , которая сортирует массив прямым выбором и считает число сравнений и число перестановок, помогите плз сделать процедуру для метода прямого включения .

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;


Тегами не забываем пользоваться...

Автор: мисс_граффити 22.12.2006 23:58

если я правильно понимаю, метод прямого включения - то же, что и простые вставки?


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;

Автор: -катя- 23.12.2006 0:25

а как добавить сюда счетчик для сравнений идля перестановок ????

Автор: volvo 23.12.2006 0:26

Здесь про это говорилось: http://forum.pascal.net.ru/index.php?s=&showtopic=12926&view=findpost&p=75441

(то же самое - для любого другого метода...)