通过执行局部线性搜索来提高二进制搜索的缓存局部性?

问题描述

由于对内存的随机访问,已排序数组的二进制搜索可能具有较差的缓存局部性,但是对于大型数组,线性搜索的速度很慢。是否可以设计一种混合算法?例如,您可以将长度为100的排序数组分成10个块,每个块的长度为10。在每个块中,我执行简单的线性搜索,但是在“全局”级别上,我按常规意义执行二进制搜索:如果搜索的值不在第一个块或第10个块中,则我将查找中间位置,即第5个块(因为5 = floor((1 + 10)/ 2)。如果第5个块不包含搜索的值,我将查看第3个块或第7个块,具体取决于搜索的值是小于还是大于第5个块中的数字。

人们是否考虑过这种算法?值得付出努力吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...