所以我和我的朋友在這個問題上沒有看到對方的眼睛。它要求在n個元素的最大堆中搜索第7大元素的時間複雜度?在最大堆中搜索第7大元素?
我認爲它應該是O(n),她認爲它應該是O(1)。我的邏輯是,假設n是7,那麼第7個最大的元素將是堆中的最後一個元素,所以如果我們考慮最壞的情況,它應該是O(n)。然而,她表示,因爲這是一個最大的堆,所以找到第七大元素應該花時間。但在O(1)時間內,即使使用她的邏輯,甚至可以找到第50個最大元素或第100個最大元素。 另外,我們遇到這個問題的書說解決方案將是O(logn)。
有人可以告訴我哪個解決方案是正確的嗎?
要說有一個O(1)解決方案就是說,不管k或n的值如何,你都可以在恆定時間內在大小爲n的堆中找到第k個最大的元素。你提出的是一個時間複雜度爲O(k)的解決方案。 –
如果k是一個常數,那麼2^k是O(1)。 – kraskevich
這就是我上面提到的......通過你的邏輯,即使找到第50個最大的元素也需要不變的時間嗎? – bigbong