给定函数的运行时间是O(平方根n)[重复]

Posted

技术标签:

【中文标题】给定函数的运行时间是O(平方根n)[重复]【英文标题】:How the running time of given function is O(square-root n) [duplicate] 【发布时间】: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.***.com/questions/334822/… 【参考方案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

【讨论】:

以上是关于给定函数的运行时间是O(平方根n)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

平方矩阵和运行时间

寻找完美平方数

给定函数的复杂度是多少[重复]

计算给定递归函数的精确运行时间(时间复杂度)

算法-排序

如何在不使用内置函数的情况下计算数字的平方根? [重复]