对计算大O复杂度感到困惑

问题描述 投票:0回答:1

最近我开始用Python学习数据结构

list_ = [6, 4, 3, 2, 1, 7]
expected_sum_result = 9

def two_pair_sum_using_complement(array, expected_sum):
    unique_numbers = set()  #set
    for num in array:
        if num in unique_numbers:
            return True
        unique_numbers.add(expected_sum - num)
        print(unique_numbers)
    return False


print(
 two_pair_sum_using_complement(array=list_, expected_sum=expected_sum_result))

在上面的代码中,你可以简单地说 BIG O 是 O(n) 但我有疑问的是,我在操作符中使用了 if num in unique_numbers 以获得 O(n) 复杂度,我提到了这个网站 https://wiki.python.org/moin/TimeComplexity 我已附上屏幕截图。

那么,我可以认为我有一个 O(n) 的 FOR 循环,并且我有一个在 FOR 循环内有 O(n) 的 in 运算符,因此复杂度是 O(n^2)?

我尝试过使用一些网站和人工智能,但我无法轻松理解这些事情。

python python-3.x data-structures time-complexity big-o
1个回答
0
投票

在最坏的情况下,它可能是 O(n),但它在多次查找中摊销为 O(1)。

https://en.wikipedia.org/wiki/Amortized_analysis

© www.soinside.com 2019 - 2024. All rights reserved.