【发布时间】:2014-09-12 21:35:04
【问题描述】:
我目前正在学习算法课程,我需要帮助来解决这个问题。如上所示,因为我持怀疑态度,不太确定。 :) 我有两个问题:
问题 1: 根据我从算法书中的理解,我相信这个问题的运行时复杂度是 f(n) = 3n。为什么?好吧,因为 while 循环将继续运行 n 次,并且对于循环的每次迭代,您都有 3 次操作(1 次减法、1 次乘法和 1 次加法)我的虽然过程是正确的还是错误的?由于赋值语句,它真的应该是 f(n) = 5n 吗?我知道两者的复杂性相同,但我真的很想明确确认。
问题 2: 至于显示算法是否找到多项式的值,足以让我举一个例子来说明它找到特定多项式的值,比如 3n^2 + 2n + 1 来证明算法有效或者是否有更好的这样做的方法。
【问题讨论】:
-
在计算时间复杂度时不必关心常量。 O(n) 与 O(2n) 和 O(200n) 相同
-
哦,好的。复杂性 BigOh(n) 上面的代码也是如此。我的思维过程是正确的,还是复杂性是别的? arunmoezhi
-
你应该问自己这些问题。 while 循环运行多少次?
i的值是否独立于循环内完成的工作(i=i-1除外)? -
哦,看起来 a_i 依赖于 i。
-
是的。但是 a_i 不会影响 while 循环的执行次数。因此可以安全地假设 while 循环将运行 n 次给你 O(n)。您不必费心计算加法和乘法的次数。这只会改变常量。