Big o if-else循环的大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

鉴于下面的脚本,我需要帮助找出大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 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注意到你的一些问题,你还没有接受任何答案。你可以接受一个你认为有用的答案。这会给你一些声誉,所以你可以在这个网站上做更多的事情。你也应该花一点时间看看我注意到你的一些问题,你还没有接受任何答案。你可以接受一个你认为有用的答案。这会给你一些声誉,所以你可以在这个网站上做更多的事情。您还应该花一分钟来看看