Big-O表示法和编码

时间:2013-07-28 12:08:26

标签: big-o time-complexity

我正在努力解决从代码中制定大写符号的问题。

我理解基本步骤,即

for (int i = 0; i < n; i++) O(n)

那个

for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) 

O(n 2

我很难理解在何处或如何计算对数值。

会:

for (int i = 0; i < n * 2; i++) O(log n) O(n log n) O(log 2n)等< / p>

有人可以用代码形式演示一个例子以及如何形成符号。

我已经研究并不断获取有关排序的示例以及列表被切碎等,这在表单中是有意义的,但我似乎没有得到如何将其应用于上面的代码。

我是整个编码和大写符号的新手。

我熟悉对象,类,循环,函数,结构等。 我正在忙着学习c ++,因为它是我课程的一部分。 我的教科书并没有很好地解释对数大计算或者几乎没有解释。

1 个答案:

答案 0 :(得分:1)

可以将代码表示为递归关系:

T(n) = T(n-1) + 2 * c, where c = the inner part of the code

我们会2 * n次。

为我们提供如下解决方案: T(n) = 2 c n + c_1, where c_1 a constant

由于2 * c是常数,而第二项也是常数下降,我们可以写:

O(n)