Есть ответ 👍

Сортировка. метод выбора. уровень a. массив содержит четное количество элементов. напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. каждый элемент должен остаться в «своей» половине. пример: массив: 5 3 4 2 1 6 3 2 после сортировки: 2 3 4 5 6 3 2 1 и (подробно,т.к я не понимаю) , нужно. 20

137
284
Посмотреть ответы 2

Ответы на вопрос:

porshe04
4,7(83 оценок)

//обьявляем дополнительные переменные и главный массив, а также два дополнительных - они будут "половинками". var   a, b, c: array [1..100] of longint;   i, min, n, j, t: longint; begin   //читаем количество элементов в нашем массиве.   readln(n);     //читаем массив.   for i : = 1 to n do read(a[i]);     //заполняем первую "половинку".   for i : = 1 to n div 2 do b[i] : = a[i];     //заполняем вторую "половинку". но раз это уже вторая "половинка" главного массива, то и   //цикл теперь должен начинаться со второй части массива, а заканчиваться уже в его конце.   for i : = n div 2 + 1 to n do c[i - n div 2] : = a[i];     //теперь отсортируем первую "половинку" методом выбора. идея этого метода   //основывается на том, что мы ищем минимальный среди неотсортированных элемент,   //а затем просто swap-аем его с тем, который стоит сразу после отсортированных.   for i : = 1 to (n - 1) div 2 do   begin       min : = i;       for j : = i + 1 to n div 2 do           if b[min] > b[j] then               min : = j;       if min < > i then begin           t : = b[i];           b[i] : = b[min];           b[min] : = t;       end;   end;     //затем вторую точно также, только стоит обратить внимание на сравнения.   //так как надо отсортировать по убыванию, то теперь сравнение перед "swap"-ом   //будет другим.   for i : = 1 to (n - 1) div 2 do   begin       min : = i;       for j : = i + 1 to n div 2 do           if c[min] < c[j] then               min : = j;       if min < > i then begin           t : = c[i];           c[i] : = c[min];           c[min] : = t;       end;   end;     //а теперь просто по очереди выводим готовые "половинки", не забывая ставить   //пробел после вывода каждого элемента.   for i : = 1 to n div 2 do write(b[i], ' ');   for i : = 1 to n - n div 2 do write(c[i], ' '); end.

этоelifsehedan1234567

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS