首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二分查找函数的时间复杂度和空间复杂度

二分查找函数的时间复杂度和空间复杂度
EN

Stack Overflow用户
提问于 2018-06-12 03:16:01
回答 1查看 110关注 0票数 0

我用Java编写了下面的函数;

代码语言:javascript
复制
int foo(int a[], int n) {
    int num1 = 1, num2 = 1; 
    while(num1 < n) {
        if (binarySearch(a,num1,num2) >= 0) {
            return num2;
        }
        num1 = 2 * num1;
        num2 = 2 * num2;
    }
    return 0;
}

我正在尝试计算这个函数的时间复杂度和空间复杂度。我知道binarySearch的时间复杂度是O(logn),这个函数的空间复杂度是O(1)。有了这些信息,我试着从foo函数中计算出这些东西。我认为foo的时间复杂度是O((logn)^2),空间复杂度是O(1),但我不确定。计算这些东西的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-06-12 03:32:09

让我们分析一个没有binarySearch()调用的简化while循环:

代码语言:javascript
复制
while(num1 < n) {
    num1 = 2 * num1;
}

作为n的函数,这需要执行多少个步骤

一旦回答了这个问题,最终解决方案的关键就是认识到while循环的复杂性乘以其主体的复杂性。这意味着最终答案就是上述问题时间log n的答案。

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

https://stackoverflow.com/questions/50804629

复制
相关文章

相似问题

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