Для решения данной задачи необходимо реализовать программу, которая сортирует элементы массива с учётом их чётности. Основная идея состоит в том, чтобы отдельно обработать элементы с нечётными и чётными значениями, сохранив их исходные позиции в массиве.
Давайте рассмотрим пошаговое решение:
Чтение входных данных:
- Получим размер массива
N
.
- Считаем элементы массива.
Разделение массива на чётные и нечётные элементы:
- Пройдём по массиву и выделим отдельно элементы с нечётными значениями и отдельно — с чётными.
Сортировка:
- Отсортируем элементы с нечётными значениями по возрастанию.
- Отсортируем элементы с чётными значениями по убыванию.
Сборка результирующего массива:
- Создадим новый массив того же размера.
- Заполним его, возвращая элементы на их исходные позиции: для чётных чисел — из отсортированного списка чётных, для нечётных — из отсортированного списка нечётных.
Вывод результата:
- Выведем элементы результирующего массива в одну строку, разделив их пробелами.
Ниже приведён пример реализации на языке Python:
def sort_array(n, array):
odd_indices = []
even_indices = []
odd_values = []
even_values = []
# Разделяем индексы и значения на чётные и нечётные
for i in range(n):
if array[i] % 2 == 0:
even_indices.append(i)
even_values.append(array[i])
else:
odd_indices.append(i)
odd_values.append(array[i])
# Сортируем нечётные по возрастанию
odd_values.sort()
# Сортируем чётные по убыванию
even_values.sort(reverse=True)
# Создаём новый массив
sorted_array = [0] * n
# Распределяем отсортированные значения на свои позиции
for i, index in enumerate(odd_indices):
sorted_array[index] = odd_values[i]
for i, index in enumerate(even_indices):
sorted_array[index] = even_values[i]
# Выводим результат
print(" ".join(map(str, sorted_array)))
# Пример использования
N = int(input())
array = list(map(int, input().split()))
sort_array(N, array)
В этой программе:
- Мы используем списки
odd_indices
и even_indices
для хранения индексов соответственно нечётных и чётных элементов.
- Списки
odd_values
и even_values
хранят сами значения, которые мы затем сортируем.
- После сортировки мы создаём новый массив и заполняем его отсортированными значениями в исходные позиции.
- В конце выводим массив в требуемом формате.