找到索引i使得a [i] = i

时间:2011-03-28 12:52:15

标签: c algorithm

  

可能重复:
  Interview question - Search in sorted array X for index i such that X[i] = i

给出一个整数的排序数组和数组的长度。现在,您必须找到i的索引a(i)=i。 如果给出了索引,我可以在o(logn)中执行此操作,但如果未提及索引i,该怎么办?

2 个答案:

答案 0 :(得分:7)

正如亚历山大在评论中所说,指数的预知意味着它是O(1),而不是O(log N)

而且,除非你没有告诉我们某些信息,否则你需要O(n)时间来做这件事,而不需要预知:

for x = 0 to len(a) - 1:
    if a[x] = x:
        return x

澄清:原始问题没有说明列表已经排序,后来又添加了。由于这使得问题与this one重复,因此您应该在那里寻找解决方案的答案。

这个答案将保留原样,因为没有必要复制其他答案,这与未分类的案例有关。

答案 1 :(得分:1)

根据提供的信息,您需要检查值,直到找到匹配项。最坏的情况(不匹配,或在最后一个单元中找到匹配)是O(n)。 如果数组已经排序,则可以进行二进制搜索,即O(log n)。

您的申诉是虚假的,或者您遗漏了一些信息。