Операторы не имеют временной сложности. Операции над значениями делают .
Например:
1 + 1
сложность времени O(1)
;просто добавить два целых числа (*) [1, 2, 3] + [4, 5, 6]
имеет разную временную сложность, O(len([1, 2, 3]) + len([4, 5, 6])
, потому что объединение двух списков требует копирования всех ссылок из обоих списков в новый списокобъект.В общем случае list_len_N + list_len_K
является операцией O(N+K)
.
Вы можете посмотреть временную сложность операций над общими типами Python в Python wiki , а также некоторыедобавил здравый смысл.Например, всякий раз, когда операция должна создать новый объект, учитывайте копию.+
в двух списках создает новый объект списка, поэтому он включает в себя операцию копирования и расширения.
При использовании нескольких операторов разных типов применяются нормальные правила алгоритмической сложности;сложные операции в последовательных операциях суммируются, но O(N) + O(N)
все еще является линейным O(N)
.
* Целочисленный тип Python не связан, поэтому сложность времени немного сложнееВ качестве внутренней реализации C CPython можно использовать целые числа NC для представления значения.На практике это не проблема, поскольку разница между добавлением маленьких целых и больших целых чисел сводится к нулю по сравнению с выполнением цикла интерпретатора для динамического языка.