加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Big O表示法运行时

发布时间:2020-12-16 10:16:30 所属栏目:百科 来源:网络整理
导读:我已经获得了一些代码来解决它们的大O运行时间,有人可以告诉我我是否在正确的轨道上吗? //program1 int i,count = 0,n = 20000;for(i = 0; i n * n; i++){ count++;} 是O(n ^ 2)? //number2int i,inner_count = 0,n = 2000000000; for(i = 0; i n; i++) {
我已经获得了一些代码来解决它们的大O运行时间,有人可以告诉我我是否在正确的轨道上吗?

//program1
 int i,count = 0,n = 20000;

for(i = 0; i < n * n; i++)
{
    count++;
}

是O(n ^ 2)?

//number2
int i,inner_count = 0,n = 2000000000;

    for(i = 0; i < n; i++)
    {
        inner_count++;
    }

这是一个O(n)?

//number3
for(i = 0; i < n; i++)
{
    for(j = 0; j < n; j++)
    {
        count++;
    }
}

为O(n ^ 2)?

//number4
for(i = 0; i < n; i++)
{
    for(j = 0; j < i; j++)
    {
        for(k = 0; k < j; k++)
        {
            inner_count++;
        }
    }
}

是O(n ^ 3)?

//number5
int i,j,n = 30000;

for(i = 0; i < n; i++)
{
    for(j = 0; j < i; j++)
    {
        inner_count++;
    }
}

那是一个O(n ^ 3)?

//number6
int i,k,l,pseudo_inner_count = 0,n = 25;

for(i = 0; i < n; i++)
{
    for(j = 0; j < i*i; j++)
    {
        for(k = 0; k < i*j; k++)
        {
            pseudo_inner_count++;
            for(l = 0; l < 10; l++);
        }
    }
}

非常困惑这个O(n ^ 3)??

//number7

int i,n = 16;

for(i = n; i > 1; i /= 2)
{
    for(j = 0; j < n; j++)
    {
        pseudo_inner_count++;
        for(k = 0; k < 50000000; k++);
     }
}

上)? (随着他们越来越难,我越来越迷茫)

//number8
int i,n = 1073741824;

for(i = n; i > 1; i /= 2)
{
    pseudo_inner_count++;
    for(j = 0; j < 50000000; j++);
}

为O(n ^ 2)?

还有一个我没看到,完全不知道
{

int i,wrong_count = 0,n = 200;

    for(i = 0; i < square(n); i++)
    {
        wrong_count++;
    }

    printf("%d %dn",wrong_count,square(wrong_count));

    return 0;
}

int square(int m)
{
    int i,j = 0;

    for(i = 0; i < m * m; i++)
    {
        j++;
    }

    return j;
}

如果有人能澄清这些并帮助我更好地理解它们,我将非常感激.

解决方法

> number5是O(N ^ 2)
> number6是O(N ^ 6)
> number7是O(N * logN)
> number8是O(logN)

其余的似乎是正确的.

尝试了解作为N的函数完成了多少操作,所有常量操作,例如

for (int i = 0; i < 333333333; ++i) { j++; }

事实上是O(1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读