这个算法的重要特征是什么?

时间:2015-02-26 19:49:09

标签: big-o

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

1 个答案:

答案 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 - 我们从等式中消除常数以及不支配函数增长的项。

Deriving Big O