【发布时间】:2016-08-10 12:44:11
【问题描述】:
我试图弄清楚这个简单程序的时间复杂度是多少,但我似乎不明白什么是最好的方法。
我已经并排写下了每一行的时间复杂度
1 public int fnA (int n) {
2 int sum = 0; O(1)
3 for (int i = 0; i < n; i++) { O(n)
4 int j = i; O(n)
5 int product = 1; O(1)
6
7 while (j > 1) { O(n)
8 product ∗= j; O(log n)
9 j = j / 2; O(log n)
10 }
11 sum += product; O(1)
12 }
13 return sum; O(1)
14 }
我是否正确假设这些运行时间并且最终运行时间是:O(n)
如果没有,有人能解释我哪里出错了吗?
总体:
1 + n + n + 1 + n + logn + logn + 1 + 1
= 3n + 2logn + 4
Final: O(n)
【问题讨论】:
标签: java algorithm time time-complexity big-o