m_m*_*n15 1 c big-o data-structures
我需要为以下代码找到O符号:
for(i = 0; i < N; i++){
for(j = 0; j < N; j+=i){
x+=y;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经能够把它降到O(N*log(N)),但我想确定.
这种功能有一个我可以查找和研究的名称吗?
对于从0开始的情况:
你的代码是O(∞),正如ShadowRanger的答案所解释的那样.
对于从1开始的情况:
您可以简单地使用观察结果,即您的实际复杂度f(N)受以下因素限制:
f(N) <= N/1 + N/2 + N/3 + ... + N/N
<= N * (Bound of value of Harmonic Number)
< c1 * N * ( log (N) ) i.e. O( N log(N) )
Run Code Online (Sandbox Code Playgroud)
要证明谐波数的值O( log(N) ),您可以使用简单的微积分.请参考此处和此处.