2
A
回答
3
理論最壞情況是O(n),因爲如果你恰巧插入所有元件,使得它們連續碰撞後,插入將有最後一個元素被放入表n步從原來的哈希位置。
然而,如果你知道輸入元素的分佈(可能假定是隨機的,但當然假設是母親......),你可以計算平均預期步數,知道你的散列函數的分佈(希望統一,但它取決於算法的質量),哈希表的長度和插入的元素數量。
如果您的散列函數足夠均勻,則可以使用生日問題計算碰撞概率,並根據這些概率計算預期的探測長度。
相關問題
- 1. 散列和線性探測
- 2. 關於散列中的線性探測
- 3. 從線性探測移動到二次探測(散列碰撞)
- 4. 哈希碰撞線性探測運行時間
- 5. 哈希表(線性探測)
- 6. 使用線性探測實現散列表時調整大小權衡
- 7. C++ - 運行時崩潰的線性探測程序
- 8. Python散列運行時間
- 9. 線性探測散列函數不工作?
- 10. 關於散列表中基於線性探測方法的Open Addressing的混淆?
- 11. 散列表和探測 - AVAILABLE和null?
- 12. 線性探測哈希表插入
- 13. 爲什麼使用線性探測的散列表需要「無對象」值或布爾的並行數組?
- 14. 探測每R'th位置散列
- 15. 測量java短時間運行的線程執行時間
- 16. 對Java HashTable實現的線性探測
- 17. 使用線性探測的C++集?
- 18. 哈希表大小調整,線性探測和複雜性
- 19. 線性探測不適用於碰撞
- 20. 用線性探測字符串哈希
- 21. 碰撞分辨率線性探測Java
- 22. SQL表列信息探測
- 23. 顯示運行時間和線程上的表格變化
- 24. 從JProfiler離線運行導出自定義探測圖形
- 25. C++線程運行時間
- 26. 散列時間戳
- 27. 用線性探針將3個鍵插入散列中,第4個元素的概率需要3個探針
- 28. 使用通配符或遞歸進行App.config運行時探測
- 29. 這個散列探測方法是如何二次的?
- 30. 在線性時間運行的Haskell中執行反向操作
你確定嗎?如果每次插入碰撞都會發生什麼?那麼你將不得不跳過1個插槽,然後2,然後3,....然後n。你會有1 + 2 + 3 + ... n給你一個複雜的O(n^2>,不是嗎? – CodyBugstein 2013-04-05 00:45:50
這就是我所說的,線性探測的複雜度是O(n),這意味着O(n)用於*每個插入/刪除/查找。因此,如果你有n個插入,那麼你的總複雜度是O(n^2) – wich 2013-04-05 10:54:20