首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索算法及其复杂性

搜索算法及其复杂性
EN

Stack Overflow用户
提问于 2011-03-16 18:25:14
回答 1查看 3.1K关注 0票数 7

我在一次采访中被问到这个问题:假设一个无限个整数数组被排序。如何在此数组中搜索整数?时间的复杂性是什么?我猜到面试官所说的无限是什么意思,我们不知道'n‘的值,其中n是数组中最大数的指数。我给出了以下答案:

代码语言:javascript
复制
SEARCHINF(A,i,x){ // Assume we are searching for x
if (A(1) > x){
   return
}
if(A(i) == x){
   return i;
}
else{
    low = i;
    high = power(2,i);
    if (A(i)>x){
       BINARY-SEARCH(A,low,high);
    }
    else{
        SEARCHINF(A,high,x);
    }
}// end else
}// end SEARCHINF method

在最坏的情况下,这将在(log x+ 1)时间内找到界(低和高),此时排序的数字从1开始,随后出现后续数。然后,二进制搜索需要:

代码语言:javascript
复制
O( log {2^(ceil(log x)) - 2^(floor(log x))} )

这是正确的吗?如果是正确的话,这能被优化吗?

EN

回答 1

Stack Overflow用户

发布于 2011-03-16 19:00:43

排序数组确实给出了它:二进制排序。

最坏情况: O(lg(n))。找不到更快、更可靠的方法了。

当然,你可以告诉他,在无限数组中找到一个元素要花费很长时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5329937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档