给定无限数组开头的 N 排序元素,查找 O(logN) 时间内数组中是否存在给定的 k 元素,或者如果元素不存在则返回正确的消息 .

到目前为止我提出的是二进制搜索的修改,因为我们不知道数组的长度(我们知道它的无限但我们不知道N)我用这个:

if k > A[i] then let i = i*2
If k == A[i], then we re done, otherwise we do binary search as usual on A[1..i].

唯一的问题是,使用这个伪代码时,恐怕需要花费时间才能使搜索高于O(logN),因为我们有可能运行多个二进制搜索,因此它将成为O(klogN) .

有任何想法吗??