最近我在一次採訪中被問到了這個問題。 在二進制搜索中,我們有兩個比較大於一個和小於中間值的其他比較。它是否可以進行優化,以便我們只需檢查一次?二進制搜索優化的比較數量方面
1
A
回答
2
是的,有幾種方式。
通過進行三方比較,其中存在一些Fortran版本(請參閱「算術IF」)。
通過在x86(和其他)程序中玩弄技巧 - 可以使用一個cmp
,但仍使用兩個分支。
2
不,你不能。雖然您可以切換操作員(例如,而不是更大和更少使用更大和相等),您將最終得到兩個比較。在二分法搜索中,實際上有三個結果,如果您比較其中兩個結果並且兩個結果都不是真的,則它只能是第三個結果。
例如:
if (lookup < mid)
searchLower();
else if (lookup > mid)
searchUpper();
else
found(lookup);
如果您切換周圍的運營商而言,牽連一會改變,但你總是需要兩個comparisions。
相關問題
- 1. 二進制搜索和eps比較
- 2. 二進制搜索的比較次數的復發關係
- 3. 二進制數比較
- 4. 二進制比較
- 5. 如何更好地理解每比較一次比較二進制搜索?
- 6. 如何使用二進制搜索比較x509certificates
- 7. Python中的二進制搜索,更優雅的方法?
- 8. 優化二進制搜索樹'刪除'功能
- 9. 二進制搜索樹內的二進制搜索樹
- 10. C#二進制搜索變化
- 11. 二進制搜索是/是二進制搜索貪婪算法?
- 12. RandomAccessFile的二進制搜索
- 13. 比較二進制整數ruby
- 14. 在二進制搜索中搜索排序數組的複雜度較低
- 15. 二進制搜索平方根[作業]
- 16. 線性搜索或二進制搜索或二叉搜索樹
- 17. 二進制搜索樹 - 搜索範圍
- 18. Swift二進制搜索樹搜索
- 19. 修改的二進制搜索數組
- 20. C二進制搜索
- 21. 二進制遞歸搜索
- 22. 二進制搜索樹C++
- 23. 與二進制搜索
- 24. 二進制搜索樹Instantiaition
- 25. 二進制搜索樹toString
- 26. 二進制搜索樹
- 27. 搜索二進制表
- 28. java二進制搜索arraylist
- 29. 二進制搜索程序
- 30. 執行二進制搜索
你想緩存? – 2012-08-03 16:19:07