繁体   English   中英

渐近分析

[英]Asymptotic analysis

我无法理解如何将其变成公式。

    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= N; j += i) {

我意识到会发生什么,对于每个i ++,你有1级乘法而不是j。

i = 1,你得到j = 1,2,3,...,100

i = 2,你得到j = 1,3,5,......,100

我不确定如何用Big-theta来思考这个问题。

总的j是N,N / 2,N / 3,N / 4 ...,N / N(我的结论)

怎么最好尝试将其视为N的函数?

所以你的问题实际上可以简化为“谐波系列1/1 + 1/2 + 1/3 + ... + 1 / N的紧密限制是什么?” 答案是log N (您可以将其视为连续和而不是离散,并注意1/N的积分是log N

您的谐波系列整个算法的公式(正如您已正确总结的那样)

所以,你的总和:

N + N/2 + N/3 + ... + N/N = N * (1 + 1/2 + 1/3 + ... + 1/N) = Theta(N * log N)

因此算法的紧密界限是N*log N

请参阅[严格]数学证明这里 (参见“整体测试”和“背离率”部分)

那么,你可以有条不紊地使用Sigma表示法:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM