随笔 - 62  文章 - 0  评论 - 0  阅读 - 11546

算法分析相关概念

算法分析相关概念

算法的时间复杂度

时间复杂度的分析注意事项

同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行时,效率均不相同。所以,精确度算法的执行时间没有太大意义,所以我们往往只关注算法的时间开销相对于问题规模变化的趋势,也就是时间复杂度。

时间复杂度的算法

算法(或程序)中基本操作(或语句)重复执行的次数的总和。

设n为求解问题的规模,基本操作(或语句)执行次数总和称为语句频度,记作f(n)

执行下面的步骤:

  1. 去掉f(n)中的所有加法常数。
  2. 只保留最高阶项。

得出时间复杂度记作O(f(n))。

例1:

{
    int a;
    scanf("%d",&a);
    a++;
    printf("%d",a);
}

上述的算法中,先定义了一个int类型的a,然后通过输入给a进行赋值,然后进行a+1,最后将a输出。以上每条语句都只进行了一遍,所以语句的频度为:f(n)=f(1)=3。时间复杂度就为:O(f(n))=O(3)=O(1)。O(1)称为常量阶/常量数量级。

例2:

void sum(int a[],int n){
    int s=0,i;	//1次
    for(i=0;i<n;i++)	//n次
        s+=a[i];	//n次
    printf("%d",s);	//1次
}

上述的算法中,先定义了一个int类型的s,然后进行了n次的循环,循环里面是对数组a里元素的求和,最后将s输出。其中部分语句进行了n次,所以语句的频度为:f(n)=1+n+n+1。时间复杂度就为:O(f(n))=O(2n+2)=O(n)。

posted on   沁鱼  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示