Big o if-else循环的大Oh符号
鉴于下面的脚本,我需要帮助找出大Oh符号Big o if-else循环的大Oh符号,big-o,Big O,鉴于下面的脚本,我需要帮助找出大Oh符号 p = 0 if a < b : for i in range(1,n) : j = 1 while j < i : p = p + j j = 2 * j else : for i in range(1, n) : p = p + 1 for j in range(1,n) : p = p + j for k in
p = 0
if a < b :
for i in range(1,n) :
j = 1
while j < i :
p = p + j
j = 2 * j
else :
for i in range(1, n) :
p = p + 1
for j in range(1,n) :
p = p + j
for k in range(1,n) :
p = p + k
p=0
如果a
这主要是因为我不确定if和else语句的大Oh符号。我认为答案可能只是n,因为for循环在n的范围内,但我不确定嵌套的while循环会如何影响答案,或者if-else语句是否会改变答案。因为使用大oh表示法,您考虑的是上界,在最坏的情况下应该是O(n*lg n),在最好的情况下应该是O(n) 编辑:我没有注意到
j=j*2
,@AbcAeffchen已经包含了这一点
关于最佳情况和最坏情况,请看一看。因为使用大oh符号,您考虑的是上界,在最坏情况下,上界应该是O(n*lg n),在最佳情况下,上界应该是O(n) 编辑:我没有注意到
j=j*2
,@AbcAeffchen已经包含了这一点
关于最佳情况和最坏情况,请查看。取决于输入
a
和b
:
最佳情况(a)≥ b
):从
1
到n
运行的三个循环。这是在O(n)
中
最坏情况(a
):一个用于从
1
运行到n
的循环,带有嵌套的while循环。
while循环具有断开条件j
。在while循环中,j
总是乘以2
,因此j
包含2
的幂。问题是x
必须有多大,这样2x
才能保持,答案是log₂ 我≤ 日志₂ n
。所以你得到了一个最坏的情况O(n⋅日志n)
您发布的代码非常简单,可以找到最佳和最坏的情况。如果算法要复杂得多,则只查找最坏情况的复杂度。取决于输入
a
和b
:
最佳情况(a)≥ b
):从
1
到n
运行的三个循环。这是在O(n)
中
最坏情况(a
):一个用于从
1
运行到n
的循环,带有嵌套的while循环。
while循环具有断开条件j
。在while循环中,j
总是乘以2
,因此j
包含2
的幂。问题是x
必须有多大,这样2x
才能保持,答案是log₂ 我≤ 日志₂ n
。所以你得到了一个最坏的情况O(n⋅日志n)
您发布的代码非常简单,可以找到最佳和最坏的情况。如果算法要复杂得多,则只需查找最坏情况的复杂度。最坏情况和最佳情况的实际含义是什么?我只知道大Oh符号是一个答案?对不起,如果这真的很明显,也许我还没有学会?哈哈,最坏的情况和最好的情况到底意味着什么?我只知道大Oh符号是一个答案?对不起,如果这真的很明显,也许我还没有学会?hahaI注意到你的一些问题,你还没有接受任何答案。你可以接受一个你认为有用的答案。这会给你一些声誉,所以你可以在这个网站上做更多的事情。你也应该花一点时间看看我注意到你的一些问题,你还没有接受任何答案。你可以接受一个你认为有用的答案。这会给你一些声誉,所以你可以在这个网站上做更多的事情。您还应该花一分钟来看看