Q
无分支二进制搜索
6
A
回答
6
我打算假设你正在谈论“在你想支持的域中创建一个包含所有完美广场的static const
数组,并在其上执行快速无分叉二进制搜索”。发现在this answer。
“无分支”二分查找基本上只是一个展开的二分查找循环。这只有在事先知道你正在搜索的数组中的项目数量(如果它是static const
)。如果手工操作时间太长,您可以编写一个程序来编写展开的代码。
然后,您必须基准您的解决方案,看看它是否真的比循环更快。如果你的无分支代码太大,它不适合CPU的快速指令缓存,并且比等效循环花费更长的时间运行。
1
如果有一个函数根据正确项目与当前项目的位置返回+1,-1或0,可以初始化位置以列出大小/ 2,并逐步位置/ 2,并且然后在每次比较之后做位置+ =方向*步长;步长=步长/ 2。迭代到步骤为零。
相关问题
- 1. 二进制搜索树内的二进制搜索树
- 2. 二进制搜索是/是二进制搜索贪婪算法?
- 3. 关于无网点二进制搜索
- 4. 线性搜索或二进制搜索或二叉搜索树
- 5. 二进制搜索树 - 搜索范围
- 6. Swift二进制搜索树搜索
- 7. C二进制搜索
- 8. 二进制递归搜索
- 9. 二进制搜索树C++
- 10. 与二进制搜索
- 11. 二进制搜索树Instantiaition
- 12. 二进制搜索树toString
- 13. 二进制搜索树
- 14. 搜索二进制表
- 15. java二进制搜索arraylist
- 16. 二进制搜索程序
- 17. 执行二进制搜索
- 18. 二进制搜索ALP
- 19. 二进制搜索问题?
- 20. Haskell - 二进制搜索树
- 21. 使用二进制搜索
- 22. Java二进制搜索
- 23. 二进制搜索树C++
- 24. 二进制搜索C++ STL
- 25. Java:二进制搜索
- 26. RandomAccessFile的二进制搜索
- 27. 二进制搜索树C++
- 28. 二进制搜索CompareTo Java
- 29. 实现二进制搜索
- 30. 使用二进制搜索(C#)搜索分类列表
啊好吧我现在明白了,谢谢。我认为有一些奇怪的东西在避免循环中的if语句。 – GWW 2011-02-08 19:01:40
+1,因为这确实是一个清除循环分支的有用方法,但是从后面对这个问题的评论看来,R.似乎意指“旋转比特来避免条件分支”的含义。通过这样做你可以避免*所有*分支。 – 2011-02-09 08:59:19