C++ 以下代码段的时间复杂度是否为O(n^2)?
我想知道以下代码片段的时间复杂度是否为C++ 以下代码段的时间复杂度是否为O(n^2)?,c++,time-complexity,C++,Time Complexity,我想知道以下代码片段的时间复杂度是否为O(n^2): 类解决方案{ 公众: 整数平方(整数n){ 如果(n外环是O(n) 内部循环是O(sqrt(i)) 总额为: 1 + sqrt(2) + ... + sqrt(N) 它大于O(N),但小于O(N^2) 如果不对上述总和进行非常精确的计算,我会说,它接近于O(N*sqrt(N)) 更新 自年月日起,上述金额为: C1 + (2.0/3)*N*SQRT(N) + (1.0/2)*SQRT(N) + .... 外环为O(N) 内部循环是O(sq
O(n^2)
:
类解决方案{
公众:
整数平方(整数n){
如果(n外环是O(n)
内部循环是O(sqrt(i))
总额为:
1 + sqrt(2) + ... + sqrt(N)
它大于O(N)
,但小于O(N^2)
如果不对上述总和进行非常精确的计算,我会说,它接近于O(N*sqrt(N))
更新
自年月日起,上述金额为:
C1 + (2.0/3)*N*SQRT(N) + (1.0/2)*SQRT(N) + ....
外环为O(N)
内部循环是
O(sqrt(i))
总额为:
1 + sqrt(2) + ... + sqrt(N)
它大于O(N)
,但小于O(N^2)
如果不对上述总和进行非常精确的计算,我会说,它接近于O(N*sqrt(N))
更新
自年月日起,上述金额为:
C1 + (2.0/3)*N*SQRT(N) + (1.0/2)*SQRT(N) + ....
我想说复杂性是
O(n√n)
@PatrickRoberts,两个问题-i
。如何O(n√n)
?;和ii
。如何插入平方根符号?外循环是O(n)
,内循环是O(0.5√N)
。由于没有提前退出任一循环的条件,您只需将它们相乘即可得到总复杂度,并删除系数,因为它们不属于big-O。而√是ALT+V
我想说复杂性是O(n√n)
@PatrickRoberts,两个问题-i
。如何O(n√n)
?;和ii
。如何插入平方根符号?外循环是O(n)
,内循环是O(0.5√N)
。由于没有提前退出任一循环的条件,您只需将它们相乘即可得到总复杂度,并删除系数,因为它们不属于big-O。而√是ALT+V
哇!我甚至都没想过。你能指出sqrt(i)
是怎么回事吗?它不是“接近”,它是。正如N->∞代码>,则函数的计时按比例增加到N√N
同样,这意味着它在技术上也是O(N^2)
,和O(N^3)
,和O(2^N)
,等等@UmedhSinghBundela,(j*j哇!甚至没有想过。你能指出sqrt(i)
?它不是“接近”,而是∞代码>,则函数的计时按比例增加到N√N
同样,这意味着它在技术上也是O(N^2)
,和O(N^3)
,和O(2^N)
,等等