Сложность времени "in" (оператор удержания) - PullRequest
3 голосов
/ 03 июня 2019

Мне было просто интересно, когда мы понимали сложность времени алгоритма, подобного приведенному ниже.

Для списка питонов, если у нас есть цикл for, итерирующий по нему, а затем проверка содержимого, будет ли времясложность этого будет O (п ^ 2).

Я знаю, что оба являются O (n) (или я думаю), поэтому их вложение друг в друга сделало бы это O (n ^ 2)?

Я думаю, если бы этот "список"на самом деле это список, то временная сложность кода ниже O (n ^ 2).Но если это словарь, то это будет O (n), потому что поиск - это O (1).Это правильно?

Спасибо за любую помощь заранее!

for element in list:
    if x in list:

1 Ответ

3 голосов
/ 03 июня 2019

Ваш анализ верен.

  • Список содержит O (n), а выполнение операции O (n) O (n) раз O (n 2 ).
  • Поиск в словаре - O (1), а выполнение операции O (1) O (n) раз - O (n).
...