加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

这个双循环的复杂性是什么?

发布时间:2020-12-16 07:07:31 所属栏目:百科 来源:网络整理
导读:#include stdio.hint main() { int N = 32; /* for example */ int sum = 0; for (int i = 1; i = N*N; i = i*3) for (int j = 1; j = i; j++) sum++; printf("Sum = %dn",sum); return 0;} 外循环是奇数. 如果检查只有N(而不是N * N)那么我每次增加3乘以意
#include <stdio.h>

int main() {
    int N = 32; /* for example */

    int sum = 0;
    for (int i = 1; i <= N*N; i = i*3)
        for (int j = 1; j <= i; j++)
            sum++;

    printf("Sum = %dn",sum);
    return 0;
}

外循环是奇数.

如果检查只有N(而不是N * N)那么我每次增加3乘以意味着外循环需要N / 3次N次迭代?

但是检查是N * N或N ^ 2所以暗示将增长

N^2  / 3 ??? (n squared divided by 3) Is that correct?

如果我玩N的不同值,比如每次加倍,i循环(单独)不会增长太多.像对数增长一样).我将如何用数学方法表达这个?

那么你如何看待内环?如果它每次增加到i,我怎样才能以数学方式表达?如何将内循环与N相关联?

我想a)能够用N来表示数学上的“复杂性”.然后,下一步,b)是使用big-O表示法.

对此感到困惑.任何帮助将非常感激.

解决方法

我认为外部循环执行log3(N * N)次,因为每次乘以3使得你有1,3,9 ……并且N * N执行的对数基数3达到N * N.

内部循环最多执行N * N次,因此一切都变为log3(N * N)* N * N.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读