在排序数组中查找索引

时间:2014-02-14 22:27:32

标签: arrays performance algorithm big-o

给定一个键的排序数组A[1...n],以及存储在x中的另一个键A,显示如何找到索引k,以便A[k] = x 1}}及时O(log(k))

我知道排序数组的二进制搜索平均会在O(logn)完成,但如上所述,显示O(logk)运行时的最佳方法是什么一个排序的数组?
我感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

进行指数搜索,从索引m = 1开始,然后每次加倍m,直到m处的数组元素大于x。然后,对最终m下面的数组子集进行常规二进制搜索。

答案 1 :(得分:0)

二进制搜索给出O(log N)是标准方法。我不确定O(log k)是否是错误打印,半等价,或者建议将搜索“偏向”到范围的低端。

也许是使用非中途中点的二进制搜索..因为log的差异是log,可能使用log()函数在每次迭代时选择一个中点?