【问题标题】:How the running time of given function is O(square-root n) [duplicate]给定函数的运行时间是O(平方根n)[重复]
【发布时间】:2022-01-16 04:20:32
【问题描述】:

以下函数的运行时间复杂度是多少。

public void funtion(int n){
       int i=1,s=1;
       while(s<=n){
       i++;
       s=s+i;
       System.out.println("*");
    }
    }

【问题讨论】:

  • 欢迎来到堆栈溢出 :) 我用一个关于如何查找函数时间复杂度的一般问题来欺骗您的问题。一个很好的问题会显示您已经尝试过的内容以及您遇到的特定位置。由于您的问题不包含此信息,因此除了解决此(可能是家庭作业)问题的一般提示之外,很难知道提供什么帮助。另见:meta.stackoverflow.com/questions/334822/…

标签: algorithm data-structures time-complexity


【解决方案1】:

在第k步,S=sum (i for i in 1,K)=K(K+1)/2

所以你会用 k 做 K 个循环,使得 k(k+1)/2=n

k**2+K-2n=0 正根为 K = (-1+sqrt(1+8n))/2 = sqrt(1/4+2n)-1/2

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2021-12-07
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多