C++ 对于给定的方程f(N),满足O(f(N))意味着什么?

C++ 对于给定的方程f(N),满足O(f(N))意味着什么?,c++,big-o,C++,Big O,这是我期末复习中唯一一个我还不确定的问题。我已经把其余的74个都算出来了,但这一个完全难住我了。我认为这与找到C和k有关,但我不记得怎么做,甚至不记得它的意思。。。我甚至可能没有走上正确的轨道 我遇到的问题是“N的最小可接受值是多少,这样成员函数Heap::Insert(int v)就满足了O(f(N))的定义?” Heap::Insert(int v)的代码如下所示: void Insert(int v) { if (IsFull()) return; int p=++count

这是我期末复习中唯一一个我还不确定的问题。我已经把其余的74个都算出来了,但这一个完全难住我了。我认为这与找到C和k有关,但我不记得怎么做,甚至不记得它的意思。。。我甚至可能没有走上正确的轨道

我遇到的问题是“N的最小可接受值是多少,这样成员函数
Heap::Insert(int v)
就满足了
O(f(N))
的定义?”

Heap::Insert(int v)的代码如下所示:

void Insert(int v) 
{ 
  if (IsFull()) return; 
  int p=++count; 

  while (H[p/2] > v) { 
     H[p] = H[p/2]; 
     p/= 2; 
  } 
  H[p] = v; 
}
给出的可能答案是:
32、64、128、256


我完全被难住了,不得不在早上参加这次考试。非常感谢您的帮助。

我承认这个问题很模糊,但我会尽力给出合理的解释

如果我们将
f(N)
代码执行的操作的时间复杂性称为堆中元素数量的函数,教授希望您记住,对于二进制堆插入,
f(N)=O(log(N))
,即
O(h)
,其中
h
是堆的高度,我们假设它是完整的(记住堆是如何工作的,它可以表示为二叉树)。因此,您必须尝试
Nmin
的这四个值,并找到满足定义的最小值,即

f(n) <= k*log(N)
f(n)=Nmin
和至少a
k
。我会给你计算f(N)的细节,只要你的代码做了教授或你期望它做的事情


注意:我真的很喜欢LaTeX渲染叠加溢出问题!就像在数学上一样

您确定这是一个堆插入吗?我在
while
语句中看到一个无限循环。这是一个糟糕的代码,它不受任何实值函数的限制。但为了论证,f的定义是什么?问题是,如果
f
是从实到正实的任何函数,使得
Insert
具有渐近复杂性
O(f(n))
,则存在一个
k
满足任何有限
Nmin
的不等式。我认为这个问题的意思是f是从实数到实数上的函数,但我认为你的解释更有可能。Stefano,谢谢你的回答。我想你让我走上了正确的道路,但现在,我不知道什么是
k
,也不知道如何找到它。你能给我指出正确的方向吗?实际上你不需要找到它,只要选择一个(合适的)