Сортировка массивов, паскаль

Добрый вечер! Нужно реализовать сортировку массива через такой цикл: берем массив, находим max и min, min ставим в начало, max в конец. Первый и последний элементы отбрасываем. Затем с оставшимся массивом делаем то же самое и так далее. Вывод-отсортированный массив. Нужно использовать как можно меньше Begin и end.

Кому нужно?

Мне)

Дерзайте, напишите - похвастайтесь, а здешние форумчане подскажут оптимизацию.

program Ex;

const
  N = 10;

var
  a: array [1..N] of integer;
  i, j, k, l,  min, max: integer;

begin
  for  i := 1 to N do
    a[i] := Random(1000);
  writeln('Элементы массива a: ');
  for  i := 1 to N do
    write(a[i], ' ');
  min := a[1];
  max := a[1];
  begin
    for i := 1 to N do 
      Readln(a[i]);
    for j := 1 to N - 1 do
      for i := 1 to N - j do
        if a[i] < min then min := a[i];
    if a[i] > max then max := a[i];
    a[j]:=min;
    a[n-j+1]:=max;
  end; 
  
  write( max, ' ', min);
  writeln;
  for i := 1 to N do
    write(a[i], ' ')
  
end.

А вы взяли и просто так воткнули их непонятно зачем :joy:

а вот тут они видимо как раз нужны

Спасибо! Но ничего не работает, массив должен быть сформирован по возрастанию

Так для начала надо как минимум добавить begin/end в циклы (поиск макс/мин видимо должен быть во втором/внутреннем цикле, а замена элементов в первом), сейчас последние 3 строки выше выполнятся один раз после циклов.

@AlexP То есть вот эту штуку менять?

 Begin
  for  i := 1 to N do
    write(a[i], ' ');
  min := a[1];
  max := a[1];
  
    for j := 1 to N - 1 do
      for i := 1 to N - j do
        if a[i] < min then min := a[i];
    if a[i] > max then max := a[i];
    a[j]:=min;
    a[n-j+1]:=max;
  end;

@AlexP А как именно просмотреть сначала первый и последний, потом второй и предпоследний и так далее, через рекурсию?


Begin
    for j := 1 to N - 1 do
      for i := 1 to N - j do
      for k:=0 to N do
      min := a[1];
      max := a[1];
        if a[i] < min then min := a[i];
    if a[i] > max then max := a[i];
    a[k]:=min;
    a[N-k+1]:=max;
  end;

@discobot Вы знаете как решать такую задачу?

Привет! Чтобы узнать, что я могу сделать, наберите: @discobot cправка.

вроде как минимум операторных скобок

program Ex;
const
  N = 10;
var
  a: array [1..N] of integer;
  i, j, k, k1,  min, max: integer;
begin
  randomize;
  for  i := 1 to N do a[i] := Random(100);
  writeln('Элементы массива a: ');
  for  i := 1 to N do write(a[i], ' ');
  writeln;
  for i :=1 to (N div 2) do
  begin
    min := i;
    max := N+1-i;
    for j := i to N+1-i do
            if a[j]<=a[min] then min:=j else
            if a[j]>a[max] then max:=j;
    k:=a[min];k1:=a[max];
    a[min]:=a[i];a[i]:=k;
    a[max]:=a[N+1-i];a[N+1-i]:=k1;
  end;
  writeln;
  for i := 1 to N do write(a[i], ' ')
end.

https://onlinegdb.com/Bk2_FE6Iu

А в чем вообще прикол с минимальностью операторных скобок? Лишнее их наличие ни каких дополнительных исполнимых команд не генерирует

м.б. по тому же принципу, что - “товарищ солдат, вот вам лом, подметите плац”

p.s. тут нет тега для оффтопа? типа [off] или [offtop] ?

p.p.s. а что это за штука:

@AleksandrH Спасибо большое!!! Очень выручили!!!

Видимо попытка найти хоть кого-то, кто поможет с задачей ))

А так вообще это бот с туториалом по основным возможностям движка, после регистрации он отправляет ЛС.
Может еще что-то умеет, хз )

@AlexP, понятно, спасибо.