gpt4 book ai didi

python - 如何找到以下程序的复杂性?

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:23 25 4
gpt4 key购买 nike

所以我不是 CS 专业的,很难回答有关程序的大(O)复杂性的问题。

我编写了以下例程来输出数组中的数字对,其总和为 0:

asd=[-3,-2,-3,2,3,2,4,5,8,-8,9,10,-4]

def sum_zero(asd):
for i in range(len(asd)):
for j in range(i,len(asd)):
if asd[i]+asd[j]==0:
print asd[i],asd[j]

现在,如果有人问这个方法的复杂性,我知道自从第一个循环遍历所有 n 项以来,它将超过(除非我错了)但有人可以解释如何找到正确的复杂度?

是否有更好更有效的方法来解决这个问题?

最佳答案

我不会为您提供完整的解决方案,但会尽力为您提供指导。

你应该拿一支铅笔和一张纸,然后问问自己:

语句print asd[i], asd[j] 执行了多少次? (在最坏的情况下,这意味着你不应该真正关心那里的情况)
您会发现它实际上取决于它上面的循环,它被执行 len(asd)(用 n 表示)次。

您唯一需要知道的是,在外循环有 n 次迭代的情况下,内循环执行了多少次? (i 从 0 到 n)

如果你还不确定结果,就拿一个真实的例子来说,比如n=20,计算最低的语句执行了多少次,这样就可以了给你一个很好的答案指示。

关于python - 如何找到以下程序的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com