Напишите функцию на Python, которая принимает несортированный список целых чисел и возвращает медиану.

Отсортируйте копию списка и возьмите центральный элемент, а для чётной длины — среднее двух центральных. Это решение занимает O(n log n) времени и не меняет вход.

Короткий ответ

Что ответить на собеседовании

Отсортируйте копию списка и возьмите центральный элемент, а для чётной длины — среднее двух центральных. Это решение занимает O(n log n) времени и не меняет вход.

Подробный разбор

Ответ с пояснениями

Отсортируйте копию списка и возьмите центральный элемент, а для чётной длины — среднее двух центральных. Это решение занимает O(n log n) времени и не меняет вход.

Для пустого списка медиана не определена:

def median(values: list[int]):
    if not values:
        raise ValueError('empty list')
    ordered = sorted(values)
    n = len(ordered)
    middle = n // 2
    if n % 2:
        return ordered[middle]
    return (ordered[middle - 1] + ordered[middle]) / 2

Для [3, 1, 2] результат 2, для [4, 1, 3, 2] — 2.5. Для огромных целых и требования точной дроби можно вернуть Fraction вместо float.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее