С
ама по себе сортировка массива не представляет сложности :
Однако она использует 2 цикла. Немного
поразмыслив, я решил поспорить со своим преподавателем программирования,
что сделаю её с одним циклом (без рекурсий и оператора
program sorting;
var i,j:word;
m:array[1..20]of byte;
p:byte;
begin
randomize;
for i:= 1 to 20 do m[i]:=random(256); {Заполнение}
for i:= 1 to 20 do write(m[i]:4); {Печать}
writeln;
for i:= 1 to 20 do
for j:= 2 to 20 do
if m[j]<m[j-1] then
begin
p:=m[j];
m[j]:=m[j-1];
m[j-1]:=p;
end;
for i:= 1 to 20 do write(m[i]:4); {Печать}
writeln;
end.
GOTO
).
И сделал. Для этого я объединил общее число повторений двух циклов
FOR
в один:
program sorting;
var i,j:word;
k:longint;
m:array[1..20]of byte;
p:byte;
begin
randomize;
for i:= 1 to 20 do m[i]:=random(256); {Заполнение}
for i:= 1 to 20 do write(m[i]:4); {Печать}
writeln;
for k:= 0 to 379 do
begin
i:=(k div 19)+1;
j:=(k mod 19)+2;
if m[j]<m[j-1]then
begin
p:=m[j];
m[j]:=m[j-1];
m[j-1]:=p;
end;
end;
for i:= 1 to 20 do write(m[i]:4); {Печать}
writeln;
end.