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 ++,因为它是我课程的一部分。 我的课本并没有很好地解释对数大的计算。
人们可以将代码表示为递归关系:
T(n) = T(n-1) + 2 * c, where c = the inner part of the code
,
我们会做2 * n
次。
给我们的解决方案如: T(n) = 2 cn + c_1, where c_1 a constant
由于2 * c
是一个常数,第二项也是一个常数,我们可以这样写:
O(n)