2014-06-16 103 views
0

我有一個散列表,它由1000個元素和100個桶組成,每個桶最多有100個條目。假設一個存儲桶有100個條目(即該存儲桶列表中有100個條目)。現在,如果我所搜索的項目是存儲桶列表中的第100個,那麼大O符號的時間複雜度是多少。 O(100)或O(n)?還是其他什麼?鏈式散列表中的時間複雜度是多少

+0

我沒有得到你的數據結構 – deviantfan

+0

它是哈希表,有100個桶,每個桶最多可以鏈接100個項目,以防碰撞。 – deepdive

+0

因此,元素的最大數量在100到10000之間,取決於值?那麼......如果我們測量有多少元素需要搜索:O(1),因爲搜索100(獨立於散列表中的總數)是恆定的。順便說一句。 O(1)== O(100) – deviantfan

回答

0

大O符號的一點是,你不「假設一個桶有100個條目」,你讓它的條目數爲n,並得到一個表達式爲n

對於列表中的n條目,時間複雜度將爲O(n),忽略您使用的任何散列函數。

請注意,這是最糟糕的情況(最後一項),平均而言,搜索運行在O(1)

0

您的問題並不重要,因爲big-O表示法表示效率如何隨元素數量變化而變化,例如,元素的數量增加了超過1000,並且你沒有告訴我們這種行爲。

例如,對於大O符號效率發現,特定元素可能是:

  • 如果一桶元素在將永遠不會有超過100個元素結束,然後O(1)

  • 如果元素停留在那個桶中的位置100處,那麼即使在它之後追加了更多的項目,那麼假設搜索將從桶的開始處開始,那麼它仍然是O(1)

  • 如果在該桶留在N/10元件的數量,那麼它的,如果元件保持在該桶的端部,但元件的數量在其中總是立方根O(N)

  • 如果元素停留在該桶的末尾並且其中元素的數量總是大約爲3 * sqrt(N),則O(平方(立方根(N)))

  • sqrt(N))

正如你所看到的,O是將搜索時間與總數的元素,但是您沒有給出足夠的數據點來描述曲線。

相關問題