通常在排序集中搜索时,二分搜索是一种快速、美观且简单的数据定位方法。然而,它确实在具有一组任意大但未知大小的假设场景中崩溃,因为它不能将其上限设置为无穷大。
为了解决这个问题,可以想象做一个,因为没有更好的术语,“反向二分搜索”来找到粗略的下限/上限,然后执行一个常规的二分查找:
min = 0
max = 1
while( set[max] exists && set[max] < target ) {
min = max + 1
max *= 2
}
binarySearch(min, max)
由于这似乎是一个微不足道的算法,我不可能是第一个想到它的人,所以我的问题只是这个算法是否有名字(如果有,它是什么)。