散列表的大小爲11,日期適合位置{3,5,7,9,6}如果未找到數據,必須進行多少次比較在最壞的情況下列表2,11,6最壞情況下的搜索次數爲零的散列複雜度
回答
這在很大程度上取決於如何術語的預期和哈希表實現...
「11號的哈希表」可能意味着11元素(特別是在C++中,
.size()
是查找表中有多少元素的函數)或11個桶,但在這種情況下可能意味着後者; 「數據擬合」可能意味着每個桶的位置都有一個數據(單數據),也可能意味着可能有一個或多個(但是如果後者的意圖和「大小「不是桶的數量,沒有答案)。「多少次比較」通常是指鍵-VS-鍵比較,但執行需要執行的桶含量比較反對NO- [更多] - 值哨兵太
實現可能處理衝突使用每鬥碰撞密鑰列表,或者它可能老調重彈,或通過從散列到桶
因此,如果我們假設11桶,有些組偏移(位移列表)級聯/跳在每個桶位置只有一個數據項{3,5,7,9,6}
和按鍵按鍵比較isons和每個桶名義上的碰撞元素列表,那麼可能發生的最壞情況就是將桶與現有入口進行比較,這意味着按鍵比較,然後是按鍵與哨兵比較。這可以滿足「2」的答案。
如果系統使用位移列表或重新哈希表,通常幾次都不會訪問同一個桶(這在統計上不太可能),所以沒有「最壞情況」的限制,因爲實施放棄了。
如果特定的死簡單的情況下,位移增量嘗試下一個桶,它可能會放棄後訪問一串填充桶並找到第一個空的...給出{3,5,7,9,6}
最糟糕的情況是,它比較鍵然後在5和6之間,然後比較7與8的哨兵,進行3或4次總比較,具體取決於你如何計算。
如果大小指示元素的數量,使得11分佈在{3,5,7,9,6}
之間,這隻有在任何單獨的桶維護衝突鍵列表時纔可能,則如果這些桶中的4個具有單個鍵,則剩餘的桶可能有11-4 = 7,所以在失敗之前可能有7次按鍵按鍵比較。
很難想象通過任何計數方法對產生6或11次比較的問題的任何合理解釋。
如果有人在學術環境中問過你,在考慮問題時可能會有一些具體的實施和符號約定。如果缺少這樣的上下文,那麼任何人要麼是非常懶惰,要麼不熟悉哈希表的基礎知識。
- 1. 散列的最壞情況時間複雜度(插入)
- 2. 最佳情況和最壞情況下的時間複雜度
- 3. 算法的最壞情況複雜度
- 4. 最壞情況下的時間複雜
- 5. 最差情況時間深度優先搜索的複雜度
- 6. 最壞情況下的時間複雜度
- 7. 平均數計算最壞的情況下,最好的情況下和平均情況下的複雜性
- 8. 冒泡排序最壞的情況下,最好的情況下和平均情況下的複雜性
- 9. 矩陣乘法最壞的情況下,最好的情況下和平均情況下的複雜性
- 10. 如何確定算法的最壞情況複雜度?
- 11. 時間複雜度 - 計算算法的最壞情況
- 12. 非單調最壞情況複雜度的例子
- 13. 計算算法的最壞情況下運行時間複雜度
- 14. 中位數quicksort中位數的最壞情況時間複雜度是多少?
- 15. 給定函數的最壞情況時間複雜度是什麼?
- 16. 將節點插入二叉搜索樹中的最壞情況時間複雜度是多少?
- 17. 爲什麼的容貌表的時間複雜度最壞情況下爲O(n)
- 18. 伸展樹最壞情況下搜索時間
- 19. 複雜性的情況下優異的,平均和壞
- 20. 確定最壞情況算法的時間複雜性
- 21. 計算遞歸算法的最壞情況運行時間複雜度
- 22. 最壞情況複雜度與輸入大小成反比的算法?
- 23. 大O - 最壞情況/最好的情況下確認
- 24. 什麼是隨機搜索的最壞情況
- 25. 複雜的情況下在XSLT
- 26. 散列表 - 用於搜索不存在的密鑰的時間複雜度
- 27. 多維散列的空間複雜度
- 28. SQL情況下,搜索
- 29. 最糟糕的情況下面的代碼複雜性
- 30. 特殊情況下插入排序的最壞情況比較
你應該在程序員堆棧交換中提出這個問題:http://programmers.stackexchange.com/ – rayryeng 2014-10-12 07:02:38