static const
数组,并对其执行快速无分支二分搜索。”在
这个答案中找到。 “无分支”二分搜索基本上只是一个展开的二分搜索循环。仅当您事先知道要搜索的数组中的项目数时,这才有效(就像它是
static const
一样)。如果手动完成的代码太长,您可以编写一个程序来编写展开的代码。
然后,您必须对您的解决方案进行基准测试,看看它是否真的比循环更快。如果您的无分支代码太大,它将无法容纳在 CPU 的快速指令缓存中,并且运行时间将比等效循环更长。
如果有一个函数根据正确项与当前项的位置返回+1、-1或0,则可以将位置初始化为列表大小/2,将步长初始化为位置/2,然后在每个比较位置+=方向*步长;步长=步长/2。迭代直到步长为零。