我只是想知道为什么
3^2500 < log(n) < 5log(n) < nlog(n^2) < nlog(n) < n^270
这不是真的。这是从快到慢。
有人能告诉我为什么这是错的吗?
我混淆了中间部分5log(n) < nlog(n^2) < nlog(n)
它们不是有相同的数量级吗?
还有一个问题,
sum = 0
for i in myIntegerList:
if i > 0:
sum += i
对于这段代码,最好的情况和最坏的情况都是O (n),对吗?
我之所以这样想,是因为for循环的大小将是n
myIntegerList包含多少个元素?此外,没有任何操作或
语句,该语句将导致代码结束。
发布于 2015-10-26 01:17:53
注意:
<⁷⁰>F213
所以正确的顺序是:
O(3^2500) < O(log(n)) < O(5·log(n)) < O(n·log(n)) < O(n·log(n^2)) < O(n^270)
注意:在这些情况下,没有大O符号的情况下使用比较是不正确的。
在所有情况下,求和都是O(n),n是列表的长度。
发布于 2015-10-26 01:19:14
我与中间部分5log(n) <
(n^2)< nlog(n)混淆
它们不是有相同的数量级吗?
考虑到n非常大:
log(n^2)
> log(n)
。
5log(n) ~ log(n)
nlog(n) > 5log(n)
,因为5是一个常数系数。
因此,正确的答案是:
13^2500 < log(n) < 5log(n) < nlog(n) < nlog(n^2) < n^27
对于这段代码,最好的情况和最坏的情况都是O (n),对吗?
是。您遍历了myIntegerList
中的所有元素。其中n
是myIntegerList
中的元素数。
我是这样想的,因为
循环的大小是n
myIntegerList包含多少个元素?
不对。这取决于myIntegerList
包含的元素数量。此外,for
循环遍历myIntegerList
中的所有元素,并在迭代完成后停止。程序将在for
循环完成后自动结束。
https://stackoverflow.com/questions/33336981
复制