【发布时间】:2019-01-26 04:48:49
【问题描述】:
我是新来的时间复杂性,我似乎无法理解最后得到这个背后的逻辑:
100 (n(n+1) / 2)
对于这个功能:
function a() {
int i,j,k,n;
for(i=1; i<=n; i++) {
for(j=1; j<=i; j++) {
for(k=1; k<=100; k++) {
print("hello");
}
}
}
}
我是这样理解它的算法的:
i = 1, 2, 3, 4...n
j = 1, 2, 3, 4...(dependent to i, which can be 'n')
k = 1(100), 2(100), 3(100), 4(100)...n(100)
= 100 [1, 2, 3, 4.....]
如果我使用上面的这个算法来模拟最终方程,我会得到这个结果:
结束方程:
100 (n(n+1) / 2)
模拟
i = 1, 2, 3, 4... n
j = 1, 2, 3, 4... n
k = 100, 300, 600, 10000
我通常在 youtube 上研究这些并得到 Big O、Omega 和 Theta 的想法,但是当谈到这个时,我无法弄清楚它们是如何以我给出的等式结尾的。请提供帮助,如果您有一些最佳做法,请分享。
编辑: 至于我自己的假设答案,它认为应该是这个:
100 ((n+n)/2) or 100 (2n / 2)
来源:
https://www.youtube.com/watch?v=FEnwM-iDb2g
At around: 15:21
【问题讨论】:
-
一般来说,如果可以的话,您会希望降低时间复杂度。 O(100 (2n/2)) 与 O(n) 相同,因为 big-O 确实如此不关心乘以常数。
标签: time-complexity computer-science complexity-theory