algorithm - 大欧米茄分析

标签 algorithm analysis big-o

我一直在努力理解它的最佳运行时间:

for t = 1 to n
    sum = 0

    for i = 1 to t
        sum = sum + x[i]

我知道第一个循环会进行 n 次。这是我挣扎的内部循环。 内部循环将第一次进入 n(n+1)/2 ,但下一次进入 n(n+1)/2 -1 。 我不确定如何将其转化为最佳运行时间。

如果可能的话,我可以向正确的方向插入。 谢谢!

最佳答案

为了形象化这一点,我采用了一种方法,在更复杂的情况下想象一个充满正方形的区域或一个充满骰子的体积。每个方 block 代表一个原子步骤。外循环迭代的所有步骤都放在同一行。对于您的情况,它看起来像这样:

t=1 #
t=2 ##
t=3 ###
t=4 ####
t=5 #####

如您所见,它们形成了一个三角形,其高度为 N,宽度也为 N。如果您现在计算正方形 (N * (N + 1)/2),则内部迭代次数为环形。将其相乘并删除不相关的项,得到复杂度 Θ(N*N)。

关于algorithm - 大欧米茄分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942125/

相关文章:

android - 快速比较 IP 地址的最佳方法

python - 查找栅格方向变化的算法

algorithm - 如何在字符串数组中对字符串进行排序,然后对该数组进行排序,结果是 O(a*s(loga+logs))?

performance - 按效率排序算法

algorithm - minimax节点的意义

javascript - 为什么反序列化我的目标数组的序列化副本可以修复内存泄漏问题?

algorithm - 简化 T(n) 运行时

algorithm - 关于二进制计数器摊销分析

testing - Im textbox From 1 to 1000 write testcase to allow only multiple of 5 使用等效分区和边界值分析?

algorithm - Big O,你如何计算/近似?