Q
無分支二進制搜索
6
A
回答
6
我打算假設你正在談論「在你想支持的域中創建一個包含所有完美廣場的static const
數組,並在其上執行快速無分叉二進制搜索」。發現在this answer。
「無分支」二分查找基本上只是一個展開的二分查找循環。這隻有在事先知道你正在搜索的數組中的項目數量(如果它是static const
)。如果手工操作時間太長,您可以編寫一個程序來編寫展開的代碼。
然後,您必須基準您的解決方案,看看它是否真的比循環更快。如果你的無分支代碼太大,它不適合CPU的快速指令緩存,並且比等效循環花費更長的時間運行。
1
如果有一個函數根據正確項目與當前項目的位置返回+1,-1或0,可以初始化位置以列出大小/ 2,並逐步位置/ 2,並且然後在每次比較之後做位置+ =方向*步長;步長=步長/ 2。迭代到步驟爲零。
相關問題
- 1. 二進制搜索
- 2. 二進制搜索
- 3. 二進制搜索
- 4. 二進制搜索
- 5. 二進制搜索樹內的二進制搜索樹
- 6. 二進制搜索是/是二進制搜索貪婪算法?
- 7. 關於無網點二進制搜索
- 8. 線性搜索或二進制搜索或二叉搜索樹
- 9. 二進制搜索樹,搜索方法
- 10. 二進制搜索樹搜索操作
- 11. 二進制搜索樹 - 搜索範圍
- 12. Swift二進制搜索樹搜索
- 13. 二進制搜索範圍
- 14. Haskell - 二進制搜索樹
- 15. 二進制搜索樹Instantiaition
- 16. 二進制搜索功能
- 17. 二進制搜索程序
- 18. 二進制搜索樹C++
- 19. RandomAccessFile的二進制搜索
- 20. 遞歸二進制搜索
- 21. 與二進制搜索
- 22. 通用二進制搜索++
- 23. 二進制搜索問題?
- 24. 二進制遞歸搜索
- 25. 二進制搜索樹toString
- 26. 搜索二進制表
- 27. 二進制搜索CompareTo Java
- 28. C#二進制搜索
- 29. 二進制搜索用C
- 30. 使用二進制搜索
啊好吧我現在明白了,謝謝。我認爲有一些奇怪的東西在避免循環中的if語句。 – GWW 2011-02-08 19:01:40
+1,因爲這確實是一個清除循環分支的有用方法,但是從後面對這個問題的評論看來,R.似乎意指「旋轉比特來避免條件分支」的含義。通過這樣做你可以避免*所有*分支。 – 2011-02-09 08:59:19