Раздел 45 · Python backend: Тарбадель

Сложность, O-большое и амортизация

middle~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Старый спортивный зал на Ярусах сервисов ты находишь по звуку: за железной дверью кто-то отсчитывает секунды вслух. Узор летит на голос первым. У входа на скамейке сидит странник в мокром плаще, посох из скрученных кабелей прислонён к стене. Он не спрашивает, зачем ты пришёл.

Странник встаёт и уходит вниз по лестнице. За дверью зал: маты, на стене доска задач мелом, над ней красный таймер. У доски долговязый парень с обесцвеченными волосами стучит по клавиатуре и громко считает: «Готово. Опять первый». Это Квот. У стены стоит мужчина в тёмно-синей куртке отряда, тренировочный шест через плечо. Он смотрит не на Квота, а на таймер.

На доске задача: убрать повторы из списка имён, сохранив порядок. Решение Квота короткое и верное: на десяти именах, на сотне, на тысяче. Каладен спрашивает не «верно ли», а «что будет, когда имён станет в сто раз больше». На этот вопрос не отвечают запуском. Нужна мерка, которая не зависит от машины, от дня недели и от того, кто сидит за клавиатурой.

Эта мерка называется сложностью алгоритма, и с неё начинается Арена. Сегодня ты научишься считать шаги вместо секунд, читать запись O-большое и поймёшь, почему list.append стоит один шаг, хотя список иногда переезжает в память целиком.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.