1

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

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

4

0 回答 0