问题描述
由于对内存的随机访问,已排序数组的二进制搜索可能具有较差的缓存局部性,但是对于大型数组,线性搜索的速度很慢。是否可以设计一种混合算法?例如,您可以将长度为100的排序数组分成10个块,每个块的长度为10。在每个块中,我执行简单的线性搜索,但是在“全局”级别上,我按常规意义执行二进制搜索:如果搜索的值不在第一个块或第10个块中,则我将查找中间位置,即第5个块(因为5 = floor((1 + 10)/ 2)。如果第5个块不包含搜索的值,我将查看第3个块或第7个块,具体取决于搜索的值是小于还是大于第5个块中的数字。
人们是否考虑过这种算法?值得付出努力吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)