Массив содержит четное количество элементов. Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. Каждый элемент должен остаться в «своей» половине. Пример: Массив: 5 3 4 2 1 6 3 2 После сортировки: 2 3 4 5 6 3 2 1
Ответы на вопрос
Нужно отсортировать две половины массива независимо друг от друга, при этом элементы не должны переходить из первой половины во вторую и наоборот:
-
первая половина (индексы
0 ... n/2 - 1) — сортировка по возрастанию; -
вторая половина (индексы
n/2 ... n-1) — сортировка по убыванию.
Так как элементов чётное количество, граница половин всегда ровно посередине: mid = n/2.
Алгоритм
-
Считываем
nи массивaизnчисел. -
Находим середину:
mid = n/2. -
Сортируем первую половину:
-
либо отдельно копируем
a[0:mid], сортируем по возрастанию, возвращаем на место, -
либо сортируем “на месте” любым алгоритмом (пузырёк/вставки/быстрая) только в диапазоне
0..mid-1.
-
-
Сортируем вторую половину:
-
аналогично, но по убыванию, в диапазоне
mid..n-1.
-
-
Выводим массив.
Пример
Массив:
5 3 4 2 1 6 3 2
n = 8, mid = 4
-
Первая половина:
5 3 4 2→ сортировка по возрастанию →2 3 4 5 -
Вторая половина:
1 6 3 2→ сортировка по убыванию →6 3 2 1
Результат:
2 3 4 5 6 3 2 1
Готовое решение (Python)
Готовое решение (C++)
Почему это правильно
-
mid = n/2делит массив на две равные части. -
Сортировка выполняется в пределах каждой части, поэтому элементы не могут “перепрыгнуть” границу.
-
В первой части порядок становится неубывающим, во второй — невозрастающим, как требуется по условию.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

