gpt4 book ai didi

algorithm - 这个算法的Big O分析是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:07 26 4
gpt4 key购买 nike

我正在学习数据结构类(class),但我不确定如何进行这个 Big O 分析:

sum = 0;
for(i = 1; i < n; i++)
for(j = 1; j < i*i; j++)
if(j % i == 0)
for(k = 0; k < j; k++)
sum++;

我最初的想法是,这是归约后的O(n^3),因为最内层的循环只会在j/i没有余数和乘法时运行规则不适用。我的推理在这里正确吗?

最佳答案

这里暂时忽略外层循环,用i来分析它。

中间循环运行 i^2 次,并在 j%i == 0 时调用内部循环,这意味着你在 i 上运行它, 2i, 3i, ...,i^2,并且每次都运行到相关的j,这意味着内循环运行时间总和为:

i + 2i + 3i + ... + (i-1)*i  = i(1 + 2 + ... + i-1) = i* [i*(i-1)/2] 

最后一个相等来自sum of arithmetic progression .
以上是O(i^3)

对从 1 运行到 n 的外循环重复此操作,您将获得 O(n^4) 的运行时间,因为你实际上有:

C*1^3 + C*2^3 + ... + C*(n-1)^3 = C*(1^3 + 2^3 + ... + (n-1)^3) = 
= C/4 * (n^4 - 2n^3 + n^2)

最后一个等式来自sum of cubes
而上面的是O(n^4),这就是你的复杂度。

关于algorithm - 这个算法的Big O分析是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com