Сортировка. Способ выбора. Уровень A. Массив содержит четное количество частей. Напишите

Сортировка. Способ выбора.
Уровень A. Массив содержит четное количество частей. Напишите программку, которая сортирует первую половину массива по возрастанию, а вторую по убыванию. Каждый элемент обязан остаться в собственной половине.
Пример:
Массив: 5 3 4 2 1 6 3 2
После сортировки: 2 3 4 5 6 3 2 1
Помогите пожалуйста и (досконально,т.к я не разумею) , безотлагательно необходимо. 20 баллов даю

Задать свой вопрос
Сухенко Юрий
хихи... хорошо, у меня сестра плачет, а для вас на данный момент эту отправлю, а потом где-то через часик следующую
Семён Казацкий
А вы не забудите?
Леонид Бисяков
А то крайне как необходимы мне эти задачки
Юра
Я сама та не справлюсь
Антонина Тончикова
не забуду. святыми лисичками зарекаюсь
Onjanov Vitja
ровно через час буду
Олег Глебов
хорошо
Ден Принц
я тут
Светлана Саркисова
сестру выгуляла
Данька Бабарэко
вот, задачка решена!
1 ответ
//Обьявляем дополнительные переменные и главный массив, а также два дополнительных - они будут "половинками".
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];
 
  //Наполняем вторую "половинку". Но раз это теснее 2-ая "половинка" основного массива, то и
  //цикл сейчас обязан начинаться со 2-ой доли массива, а кончаться уже в его конце.
  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] gt; b[j] then
        min := j;
    if min lt;gt; 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] lt; c[j] then
        min := j;
    if min lt;gt; 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.
Андрей Кашпоров
Спасибо огромное)
Amina
Не за что :)
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
задание экономиоти Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких

Экономика.

Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности

Экономика.

там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо

Русский язык.

Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.

Разные вопросы.

Сочинение на тему "Русский язык не сможет умереть!"

Математика.

Приветствую! Меня зовут Станислав, я представляю компанию under.site. Хотел бы предложить интересное решение

Разные вопросы.

Масса трёх одинаковых пакетов чая 180г чему равна масса

Математика.

Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл

Химия.

Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы

Русский язык.

Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника

Геометрия.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт