Русский
Открыть в Telegram

Пост Что такое временная сложность алгоритма?

1 мая 2023
P
PYTHON IN DEPTH🐍
Ссылка
нажмите — покажем
Что такое временная сложность алгоритма? Часть 2. Рассмотрим несколько примеров. O(1) Время, которое не зависит от объема входных данных, или постоянное время. За постоянное время можно получить элемент массива по индексу или добавить элемент в связный список. O(n) Алгоритм, в котором мы идём по списку, чтобы узнать, есть ли в нем значение 42, в худшем случае требует O(n) операций, где n -- длина списка. Такую же сложность имеет сравнение строк, потому что по сути оно тоже требуют обхода всей строки. O(log n) Проверить, есть ли значение 42 в списке, можно быстрее, чем за O(n), если список отсортирован. Тогда можно проверить на равенство элемент из середины списка. Если он равен 42, то останавливаемся. Если больше -- значит, слева можно не искать, там значения только меньше. Будем продолжать проверку, выбирая каждый раз элемент из середины оставшегося отрезка. Этот алгоритм называют бинарным поиском и он имеет логарифмическую сложность, потому что количество вариантов уменьшается каждый раз на 2, как функция, обратная степенной (она же логарифм). O(n log n) Можно показать, что большинство алгоритмов сортировки имеют сложность n log(n). За время n log(n) работают сортировка слиянием, кучей, и быстрая сортировка. Еще есть теорема, которая говорит, что если сортировка основана на сравнении элементов, то быстрее, чем за n log(n) отсортировать элементы не получится. O(n^2) За время n^2 работает обход двумерного массива, это можно представить себе как обход таблицы n * n. И ещё за это же время работают некоторые не очень эффективные по времени алгоритмы сортировки, например, сортировка пузырьком Для разработчика важно иметь интуицию насчет временной сложности алгоритмов, потому что за счет неэффективности вычислений можно загубить производительность самого мощного железа, как это случилось, когда калькулятор побил мой мощный ноутбук. Поэтому этой науке уделяется большое внимание в разработке. 95%, что на собеседовании вам предложат алгоритмическую задачу и попросят оценить время выполнения вашего решения. Если вы хотите углубиться в теорию алгоритмов, то я советую специализацию Алгоритмы и структуры данных на Курсере. Теория здесь изложена доступно и в курсе есть задачи, чтобы набить руку. А еще есть Стенфордский учебник по теории сложности, он написан замечательным языком и в нем прекрасные примеры. 🎓
2 · 278 ·

Рядом в ленте

PPYTHON IN DEPTH🐍Какова сложность операции добавления элемента в список? Чтобы ответить на этот вопрос, нужно разобраться, как списки устроены на низком уровне. Определение списPPYTHON IN DEPTH🐍Что такое временная сложность алгоритма? Часть 1. Когда в детстве меня учили умножать числа, мне говорили, что смысл умножения в том, чтобы короче записать сумм
это сообщение
PPYTHON IN DEPTH🐍Чем == отличается от is? == проверяет, одинаковые ли значения у переменных. is проверяет, указывают ли переменные на один и тот же объект. Рассмотрим на примереPPYTHON IN DEPTH🐍Пять способов создать словарь Словарь -- структура, которая позволяет хранить данные в формате ключ-значение. Словари удобны для того, чтобы передавать информац
PPYTHON IN DEPTH🐍PYTHON IN DEPTH🐍@python_in_depth · канал · Технологии
385подписчиков50средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем