Performance 不同类型的问题;主持人需要注意

Performance 不同类型的问题;主持人需要注意,performance,big-o,asymptotic-complexity,Performance,Big O,Asymptotic Complexity,我只是想弄明白为什么 3^2500 < log(n) < 5log(n) < nlog(n^2) < nlog(n) < n^270 对于这个代码片段,最好的情况和最坏的情况都是O(n),对吗 我是这样想的,因为不管怎样,for循环的大小都是n myIntegerList包含多少个元素?此外,没有任何操作或操作 导致代码结尾的语句 注意: 3^2500是O(1) 日志(n)是O(日志n) 5log(n)也是O(logn),但是一个更高的常数 nlog(n²)是O

我只是想弄明白为什么

3^2500 < log(n) < 5log(n) < nlog(n^2) < nlog(n) < n^270
对于这个代码片段,最好的情况和最坏的情况都是O(n),对吗

我是这样想的,因为不管怎样,for循环的大小都是n

myIntegerList包含多少个元素?此外,没有任何操作或操作

导致代码结尾的语句

注意:

  • 3^2500是O(1)
  • 日志(n)是O(日志n)
  • 5log(n)也是O(logn),但是一个更高的常数
  • nlog(n²)是O(n·logn²)=O(2·n·logn)=O(n·logn)
  • nlog(n)也是O(n·logn),但常数较小
  • n^270是O(n²⁷⁰)
所以正确的顺序是:

O(3^2500) 注意,在这些情况下,如果没有大O符号,使用比较是不正确的

总和是O(n),在所有情况下,n是列表的长度

我对中间部分5log(n) 它们不是有着相同的数量级吗

考虑到n非常大:

log(n^2)
log(n)

5log(n)~log(n)

nlog(n)>5log(n)
因为5是一个常数系数

因此,正确的答案是:

13^2500

对于这个代码片段,最好的情况和最坏的情况都是O (n) 对吧?

是的。您正在迭代
myIntegerList
中的所有元素。其中
n
myIntegerList
中的元素数

我是这样想的,因为for循环的大小是n 不管

myIntegerList包含多少个元素


错误。这取决于
myIntegerList
包含的元素的数量。此外,
for
循环迭代
myIntegerList
中的所有元素,并在迭代完成后停止。程序将在
for
循环完成后自动结束。

您为什么认为nlog(n^2)sum = 0 for i in myIntegerList: if i > 0: sum += i