zoukankan      html  css  js  c++  java
  • 数据结构之时间复杂度 C语言

    算法的时间复杂度:用O()表示,执行次数=时间,随着输入规模n增大,T(n)增长最慢的算法为最优算法。
    如何计算时间复杂度:
    用常数1取代运行时间中的所有加法常数
    在修改后的运行次数函数中,只保留最高阶项
    如果最高阶项存在且不是1,则去除与这个项相乘的常数
    得到的最后结果就是O阶

    int i,n=100,sum=0;
    for(i=0;i<n;i++){
    sum+=i;
    }
    上述代码时间复杂度为O(n),因为执行100次,循环的时间复杂度为循环体的时间复杂度乘该循环运行的次数。
    int i,j,n=100,sum=0;
    for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    sum+=i;
    }
    }
    时间复杂度为O(n2)。


    int i,j,n=100,sum=0;
    for(i=0;i<n;i++){
    for(j=i;j<n;j++){
    sum+=i;
    }
    }


    当i=0时执行n次,i=1时执行n-1次,...... 时n+(n-1)+(n-2)+....+1=n(n+1)/2,因此根据策略为O(n2)

    int i=1,n=100;
    while(i<n){
    i=i*2;
    }


    此程序是每次执行i=i*2然后和n比较,设执行次数为x,当执行x个2相乘的时候大于或者等于n就会推出循环即x*2=n,x=log(2)n,因此时间复杂度为O(logn)。

    函数的时间复杂度分析:
    int i,n=100,sum=0;
    for(i=0;i<n;i++){
    function(i);
    }

    void function(int count){
    printf("%d",count);

    }
    函数的时间复杂度为O(1),即总体为O(n)。

  • 相关阅读:
    AddParent
    AddChild
    贝塞尔曲线代码
    顶点纹理shader
    抽象方法与抽象类
    Application类
    布局组件
    C#单例和Unity单例
    Unity&UGUI
    Json解析
  • 原文地址:https://www.cnblogs.com/yh2924/p/12492363.html
Copyright © 2011-2022 走看看