Time complexity 以下代码片段的时间复杂度是多少?

Time complexity 以下代码片段的时间复杂度是多少?,time-complexity,Time Complexity,以下代码片段的时间复杂度是多少? 我们有3个嵌套循环 void function(int n) { int i, j,k, count 0; for (i= n / 3; i <= n; i++) for (j =1; j <= n/2; j= 2 *j) for (k= 1; k*k<= n; k++) count ++; } void函数(int n) { int i,j,k,计数0; 因为你应该自己做作业。读我的

以下代码片段的时间复杂度是多少? 我们有3个嵌套循环

void function(int n)
{
int i, j,k, count 0;

for (i= n / 3; i <= n; i++)

    for (j =1; j <= n/2; j= 2 *j)

        for (k= 1; k*k<= n; k++)

             count ++;
}
void函数(int n)
{
int i,j,k,计数0;

因为你应该自己做作业。读我的答案什么也教不了你

第一圈:O(n*2/3)
第二个循环:O(log2(n/2))
第三回路:O(sqrt(n))

总计:O(n*2/3*log2(n/2)*平方米(n))

证明:

<?php
function x ($n)
{
    $count=0;

    for ($i= $n / 3; $i <= $n; $i++)
        for ($j =1; $j <= $n/2; $j= 2 *$j)
            for ($k= 1; $k*$k<= $n; $k++)
                 $count ++;
    return $count;
}

$base = 10;
for ($i = 0 ; $i != 4 ; $i++)
{
    $x = x($base);
    $y = 2*$base/3 * log($base/2,2) * sqrt($base);
    $ratio = $x/$y;
    printf ("%-4d $ratio<br>", $base);
    $base *= 10;
}
?>
从形式上(西格玛符号)和经验上看,这是算法的精确解:


试着用n的样本值运行,开始以50的步数递增,然后在函数末尾用count的值绘制结果。使用excel进行绘制,只需输出n,用一个分隔它们的选项卡进行计数,每一个都在新行上运行,然后您可以将+paist复制到excel中。
   10 1.2870133211442
  100 1.0684184354174
 1000 0.9845391957853
10000 1.0580203701412