С ама по себе сортировка массива не представляет сложности :

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.

      Однако она использует 2 цикла. Немного поразмыслив, я решил поспорить со своим преподавателем программирования, что сделаю её с одним циклом (без рекурсий и оператора 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.

Hosted by uCoz