for(int i = 0; i < n; ++i)
{
for(int x = i; x < n; ++x)
{
// work...
}
}
此类算法的重要注意事项是什么?另外,请向我解释您是如何提出解决方案的。
另外,对于模糊的标题抱歉,但我不知道这种算法的名称。
以下是我的尝试:
如果n是:
1,将有1个工作执行。
2,将有3个工作执行。
3,将有6个工作执行。 4,将有10个工作执行。5,将有15个工作执行。
评论中的人说它是n ^ 2但是我得到的数字与结果不匹配,因为5 ^ 2是25而不是15
答案 0 :(得分:2)
Big O表示法来源于计算时间复杂度。您必须考虑算法正在进行的工作量。
请参阅下面我得出大0的答案。这是使用LateX
这是编写方程式的好工具。
备注
巨大的E
符号 - 被称为西格玛。这是一个数学符号,用于编写算法来注释循环函数。可以将其视为for
- 底部字词与您的i=0
相同,而最高字词与i < n
一样。
(n-1)
表示内循环的工作。 - 为了计算这一点,我们将等式分解为两个单独的Sigmas - 因为i
导出更复杂。
注意内循环不会运行n
次,而是n-i
。另外,第(3)行 - 了解i
是什么 - 我们使用Summations(法律6可能?)。
要获得n ^ 2 - 我们从等式中消除常数以及不支配函数增长的项。