计算运行时间功能

时间:2013-10-06 21:40:22

标签: algorithm

我有一个方法,我想计算它的运行时间:

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循环至少可以执行一次。

1 个答案:

答案 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)运行时,因为常量被忽略。同样,这只是理论上的。实际上,您将循环遍历列表两次,这将使程序变慢。

我希望我的解释清楚。我没有使用任何技术术语,但我希望你明白这一点。