C++ 对于给定的方程f(N),满足O(f(N))意味着什么?
这是我期末复习中唯一一个我还不确定的问题。我已经把其余的74个都算出来了,但这一个完全难住我了。我认为这与找到C和k有关,但我不记得怎么做,甚至不记得它的意思。。。我甚至可能没有走上正确的轨道 我遇到的问题是“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
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
和至少ak
。我会给你计算f(N)的细节,只要你的代码做了教授或你期望它做的事情
注意:我真的很喜欢LaTeX渲染叠加溢出问题!就像在数学上一样您确定这是一个堆插入吗?我在
while
语句中看到一个无限循环。这是一个糟糕的代码,它不受任何实值函数的限制。但为了论证,f的定义是什么?问题是,如果f
是从实到正实的任何函数,使得Insert
具有渐近复杂性O(f(n))
,则存在一个k
满足任何有限Nmin
的不等式。我认为这个问题的意思是f是从实数到实数上的函数,但我认为你的解释更有可能。Stefano,谢谢你的回答。我想你让我走上了正确的道路,但现在,我不知道什么是k
,也不知道如何找到它。你能给我指出正确的方向吗?实际上你不需要找到它,只要选择一个(合适的)