這個問題幾乎說明了這一切,但我正在構建一個編譯器,並試圖決定用於我的符號表的什麼樣的數據結構。考慮到符號表所需的唯一功能是搜索和插入,我希望使用可以儘快完成這些操作的數據結構。有什麼建議麼?什麼樣的數據結構能夠以最快的速度進行搜索和插入功能?
2
A
回答
2
Hash tables非常常用於此。使用N
分箱和採用每個符號中的字母總和(模N)的散列函數的簡單實現在插入和搜索時應該非常接近O(1)。
2
Dictionary/Hashtable如果我沒有弄錯,查找速度爲O(1)。
1
關於散列表查找 - 只有在沒有或幾個衝突發生時纔是O(1) - 所以假設您有適當的散列函數,它通常是O(1),但在最糟糕的情況下,它可能會以O(N )。對數據大小的良好估計至關重要。
而且你還要考慮時間,你打算使用
相關問題
- 1. 什麼樣的數據結構支持快速插入,刪除和搜索
- 2. 什麼是快速字典搜索的最佳數據結構?
- 3. 什麼數據結構是插入和搜索元素最快的?
- 4. 快速插入和過濾的最佳數據結構
- 5. 數據結構 - 快速搜索
- 6. 什麼數據結構用於快速變化的最近鄰居搜索?
- 7. 快速搜索和小尺寸搜索數據結構
- 8. 快速隨機訪問,搜索,插入和刪除的高效數據結構
- 9. 爲什麼Facebook上的智能搜索速度如此之快
- 10. 用於快速搜索的二進制數據結構
- 11. MySQL全文搜索:需要快速插入和快速搜索
- 12. 搜索和更新整數值列表的最快數據結構是什麼?
- 13. 快速製作Javascript搜索功能
- 14. 其數據結構對象的快速查找功能列表
- 15. 用於並行搜索的最快的.net數據結構
- 16. 使用通配符進行快速搜索的表數據結構
- 17. 最有效的數據結構:快速排序插入,最接近的值搜索
- 18. 進行搜索功能
- 19. 用於插入和搜索的功能結構的不錯選擇 -
- 20. 什麼是快速插入SQL數據和相關行的最佳方式?
- 21. 以更快的速度運行插入數據庫任務
- 22. 哪些功能運行速度更快?
- 23. 最近的搜索功能
- 24. 用於快速搜索的數據結構
- 25. 快速高效搜索的數據結構
- 26. 關於什麼樣的數據結構用於快速搜索時間的建議C++
- 27. 數字索引數據結構的最快數據結構?
- 28. 什麼是每天收到電子郵件通知的「保存搜索」功能的最佳數據結構?
- 29. 線段搜索的最佳數據結構是什麼?
- 30. F#中查詢速度最快的數據結構?
散列函數你的建議是很壞的哈希函數的複雜性,它使所有字謎碰撞。系統散列函數會更好(如果OP最喜歡的語言中有一個)。 – 2010-02-21 23:01:33
我將不得不找出一個更好的散列函數來使用,但散列表似乎是符號表的方式。 – adhanlon 2010-02-21 23:04:57
任何人都知道標準模板庫的SET容器如何以符號表的形式執行? – adhanlon 2010-02-21 23:14:37