找到一个简单的打印功能的大估计

时间:2014-02-18 14:43:24

标签: c++ big-o cout

while (num > 1)
{
    cout << "num is now " << num << endl;
    cout << "hello // \n";
    num /= 2;
}

我试图给出印刷报表的大估计。

用户可以输入num。我尝试了几个输入,并开始看到一个模式。

  • 1给出0打印。
  • 2-3给出1次打印。
  • 4-7给出2张照片。
  • 8-15提供3张照片。
  • 16-31给出了4张照片。

p = the number of prints。我看到给你一定数量打印的数字范围是2^p 那么O估计值是2^p吗?

3 个答案:

答案 0 :(得分:2)

你肯定在思考正确的方向,更重要的是 - 你正在以正确的方式解决问题。你的最终结论仍然有点偏离目标。尝试使用2 p 作为您计算的值,您将看到打印数量不是2 p ,而是此函数的反函数。

答案 1 :(得分:1)

这是O(log N)。原因是每次迭代都会使范围减半。如果你熟悉二分搜索,那么你的循环就是做类似的事情。

您已正确观察2^p模式。与此相反的是log base-2(而不是log base-10)。当人们在big-O表示法中提到log时,他们通常指的是base-2版本。

答案 2 :(得分:0)

只使用主定理。

Link here

b = 2 f(n)= 1 a = 1。