Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите решить задачу на python

Напишите программу, которая сортирует по возрастанию все элементы массива с нечётными номерами, а все элементы с чётными номерами – по убыванию. Нумерация элементов массива начинается с единицы.

По дате
По рейтингу
Аватар пользователя
Мудрец
7мес

Код:

1234567891011121314151617181920212223242526272829303132333435363738
 def sort_odd_even(arr): 
    # Создаем два списка: один для элементов с нечетными номерами, другой - для четных 
    odd_index_elements = [] 
    even_index_elements = [] 
 
    # Заполняем эти списки в зависимости от индекса (считая с 1) 
    for i in range(len(arr)): 
        if (i + 1) % 2 != 0:  # нечетный номер 
            odd_index_elements.append(arr[i]) 
        else:  # четный номер 
            even_index_elements.append(arr[i]) 
 
    # Сортируем элементы с нечетными номерами по возрастанию 
    odd_index_elements.sort() 
     
    # Сортируем элементы с четными номерами по убыванию 
    even_index_elements.sort(reverse=True) 
 
    # Объединяем отсортированные списки обратно в исходный массив 
    sorted_arr = [] 
    odd_index = 0 
    even_index = 0 
 
    for i in range(len(arr)): 
        if (i + 1) % 2 != 0:  # нечетный номер 
            sorted_arr.append(odd_index_elements[odd_index]) 
            odd_index += 1 
        else:  # четный номер 
            sorted_arr.append(even_index_elements[even_index]) 
            even_index += 1 
 
    return sorted_arr 
 
# Пример использования: 
arr = [5, 3, 8, 6, 2, 7, 4, 1] 
sorted_arr = sort_odd_even(arr) 
print("Отсортированный массив:", sorted_arr) 
 
Аватар пользователя
Ученик
7мес

def sort_array(arr):
odds = sorted(arr[::2])
evens = sorted(arr[1::2], reverse=True)
result = []
o, e = 0, 0
for i in range(len(arr)):
if i % 2 == 0:
result.append(odds[o])
o += 1
else:
result.append(evens[e])
e += 1
return result

Аватар пользователя
Гуру
7мес

def sort_array(arr):
odds = sorted(arr[::2])
evens = sorted(arr[1::2], reverse=True)
result = []
o, e = 0, 0
for i in range(len(arr)):
if i % 2 == 0:
result.append(odds[o])
o += 1
else:
result.append(evens[e])
e += 1
return result

Аватар пользователя
Мастер
7мес

в чем проблема в два массива закинуть чет и нечет а потом сортнуть по разному