我有一个方法,我想计算它的运行时间:
print()
{
node* p1 = sentinel_->next_;
while(p1 != sentinel_)
cout << p1->data_ << “ “;
p1 = p1->next_;
}
cout << endl;
}
如果我认为while
循环可以执行 n-1 次。
所以:
T(n)= 1 +(n-1)+(n-1)+(n-1)+ 1 = 3n - 1.
但是,用于“输入大小”的正确值是什么?
它会基于 T(n)
其中 3n-1> = 0,因此n> = 1/3
或者 n 只需大于或等于为1
因为while循环至少可以执行一次。
答案 0 :(得分:0)
算法复杂度通常根据渐近符号计算。这意味着算法在输入大小变化时的行为方式。
对于你的例子,“n”可以是任何东西。如果n == 2,你的while循环将运行一次,如果n == 3,你的while循环运行两次......一般来说,正如你所提到的,while循环对于给定的值运行“n-1”次数“N”。这意味着随着“n”的值增加,您的while循环将花费更长的时间来运行。因此,算法的复杂性直接取决于循环运行的次数。并且循环运行的次数由“n”的值确定。因此,您的代码具有O(n)的运行复杂性。
假设您有一种方法,首先遍历列表并为每个节点值添加10。然后,再次遍历列表以打印每个节点值。该算法将具有O(n)+ O(n)= 2 * O(n)的运行复杂度。这仍然等于O(n)运行时,因为常量被忽略。同样,这只是理论上的。实际上,您将循环遍历列表两次,这将使程序变慢。
我希望我的解释清楚。我没有使用任何技术术语,但我希望你明白这一点。