Найти в Дзене

Поиск двух максимумов

Поиск двух максимумов Тема массивов не вызвала интереса, поэтому закругляюсь с этим направлением. 🫠Задача: Вернёмся к шкафу с ячейками. Есть массив с ежедневными тратами за неделю. Нужно выяснить две самые большие потраченные суммы за день. 🤩Основной принцип алгоритма: Когда находим новый абсолютный максимум, старый максимум становится вторым по величине. Если же элемент не превосходит максимум, но больше текущего второго, мы обновляем только второй результат. 🚀Способ 1: Цикл for, работаем с индексами cost = [1000, 500, 800, 1200, 750, 950, 1500] # Инициализируем индексы первых двух элементов if cost[0] > cost[1]: mx1_idx = 0 # индекс самого большого mx2_idx = 1 # индекс второго по величине else: mx1_idx = 1 mx2_idx = 0 # Начинаем цикл с третьего элемента for i in range(2, len(cost)): if cost[i] > cost[mx1_idx]: mx2_idx = mx1_idx # Бывший первый становится вторым mx1_idx = i # Новый чемпион! elif cost[i] > cost[mx2_idx]: mx2_idx = i # Новый второй print(f"Дв

Поиск двух максимумов

Тема массивов не вызвала интереса, поэтому закругляюсь с этим направлением.

🫠Задача: Вернёмся к шкафу с ячейками. Есть массив с ежедневными тратами за неделю. Нужно выяснить две самые большие потраченные суммы за день.

🤩Основной принцип алгоритма: Когда находим новый абсолютный максимум, старый максимум становится вторым по величине. Если же элемент не превосходит максимум, но больше текущего второго, мы обновляем только второй результат.

🚀Способ 1: Цикл for, работаем с индексами

cost = [1000, 500, 800, 1200, 750, 950, 1500]

# Инициализируем индексы первых двух элементов

if cost[0] > cost[1]:

mx1_idx = 0 # индекс самого большого

mx2_idx = 1 # индекс второго по величине

else:

mx1_idx = 1

mx2_idx = 0

# Начинаем цикл с третьего элемента

for i in range(2, len(cost)):

if cost[i] > cost[mx1_idx]:

mx2_idx = mx1_idx # Бывший первый становится вторым

mx1_idx = i # Новый чемпион!

elif cost[i] > cost[mx2_idx]:

mx2_idx = i # Новый второй

print(f"Два максимальных {cost[mx1_idx]} и {cost[mx2_idx]}")

# Два максимальных 1500 и 1200

🚀Способ 2: Используем встроенные функции

cost = [1000, 500, 800, 1200, 750, 950, 1500]

mx1=max(cost)

mx2=max(x for x in cost if x != mx1)

print(f"Два максимальных {mx1} и {mx2}")

# Два максимальных 1500 и 1200

#python #алгоритмы #массивы #информатика10класс #программирование