【发布时间】: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 < 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