@zlodiak

Как считать сложность операции сравнения?

#!/usr/bin/env python3

a = [3, 2, 6, 34, 5]    # O(n)
for i in range(5):      # O(n)
    if a[i] > 5:        # ?
        print(a[i])     # O(1)


Помогите пожалуйста посчитать сложность. У меня проблема со строкой:
if a[i] > 5:

как понимаю, здесь придётся оценивать две операции(извлечение из словаря по ключу и сравнение >). Видимо, расчёт сложности для этой строки выглядит так?
O(1) + O(1) = O(2) -> константы сокращаем до единицы -> O(1)


В итоге сложность всего алгоритма получилась такая:
O(n) + O(n) + O(1) + O(1) = O(2n) + O(2) -> константы сокращаем до единицы -> O(2n + 1)
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 1
KevlarBeaver
@KevlarBeaver
Разработчик
Это не словарь, а список. Пишут, что в питоне доступ к элементу по индексу имеет сложность O(1), уж не в курсе, как в нём списки реализованы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы