uses crt;
const n=6;
var i,j,peres,k,temp,srav,otv:integer;
a: array [1..n] of integer;
procedure puzyr;
begin
peres:=0;
srav:=0;
writeln('Vvedi elem mas: ');
for i:=1 to n do
readln(a[i]);
for i := 2 to n do
begin
for j := n downto i do
begin
inc(srav);
if a[j-1] > a[j] then
begin
temp := a[j-1];
a[j-1] := a[j];
a[j] := temp;
inc(peres);
end;
end;
end;
writeln('Sortirovka');
for i:=1 to n do
writeln(a[i]);
writeln('Chislo perestanovok = ',peres);
writeln('Chislo sravneniy = ',srav);
readln;
end;
procedure vstavka;
begin
peres:=0;
srav:=0;
writeln('Vvedi elem mas: ');
for i:=1 to n do
readln(a[i]);
for i := 2 to n do
begin
temp := a [i];
j := i-1;
While (j > 0) and (temp < a [j] ) do
begin
a [j+1] := a [j];
j := j-1;
inc(peres);
end;
a [j+1] := temp;
end;
writeln('Sortirovka');
for i:=1 to n do
writeln(a[i]);
writeln('Chislo perestanovok = ',peres);
writeln('Chislo sravneniy = ',srav);
readln;
end;
procedure vybor;
begin
peres:=0;
srav:=0;
writeln('Vvedi elem mas: ');
for i:=1 to n do
readln(a[i]);
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];
a [i] := temp;
end;
writeln('Sortirovka');
for i:=1 to n do
writeln(a[i]);
writeln('Chislo perestanovok = ',peres);
writeln('Chislo sravneniy = ',srav);
readln;
end;
begin
clrscr;
repeat
begin
writeln('1-Puzyr 2-Vstavka 3-Vybor 4-Exit ');
readln(otv);
case otv of
1:puzyr;
2:vstavka;
3:vybor;
4:end;
end;
until otv=4;
end.
Забыл написать что должно получиться для массива 15-33-42-07-12-19: метод вставок 12 сравнений и 8 перестановок, метод выбора 15 сравнений, 4 перестановки
Сообщение отредактировано: CORS@R -