【问题标题】:Big-O Notation and codingBig-O 表示法和编码
【发布时间】:2013-07-28 12:08:25
【问题描述】:

我正在努力从代码中找出大 O 符号。

我了解基本步骤,即

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

还有那个

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

将是 O(n2)

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

会:

for (int i = 0; i &lt; n * 2; i++)O(log n)O(n log n)O(log 2n)

谁能以代码形式演示一个例子以及符号是如何形成的。

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

我对整个编码和大符号表示法是新手。

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

【问题讨论】:

  • 您的问题可能会在programmers.stackexchange.com 上得到更好的答案。
  • 这是O(n),因为你做了2n 步骤。
  • 开始划分区间时会出现对数,例如二分法搜索;当您使用平衡的树木(修剪左或右早午餐)等时
  • This question 真的很有帮助。至少这是一个好的开始。
  • @user2485710 ctheory 适用于研究级别的问题。 cs 会更好。

标签: big-o time-complexity


【解决方案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)

【讨论】:

  • 您好,请在代码中添加一些格式,以便于阅读/理解。查看here 了解更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多