算法基本概念及时间复杂度计算讲解

 

时间复杂度的计算和表示:

一个算法是由控制结构(顺序、分支和循环等)和基本操作(赋值、比较等)构成的,算法的时间复杂度是基本操作的执行频度的总和。控制结构则决定了一个基本操作的执行次数,循环结构往往会得到与数据规模相关的基本操作的执行次数。

因此,为了便于得到算法时间复杂度,通常的做法是,考虑算法中循环结构中的相关操作,以这些基本操作重复执行的次数作为算法的时间量度。

如何计算时间复杂度:

找循环体中的变量和固定语句,皆计算时间复杂度

//例题一
void fun(int n){
    int i=1;
    while(i<=n)
        i=i*2;
}

//例题2
x=2;
while(x<n/2)
   x=2*x;

//例题3
int fact(int n){
    if(n<=1) return 1;
    return n*fact(n-1);
}

//例题4
count=0;
for(k=1;k<=n;k*=2)
    for(j=1;j<=n;j++)
        count++;

//例题5
int func(int n){
    int i=0, sum=0;
    while(sum<n) sum += ++1;
    return i;
}

//例题6
for(int i=n-1;i>1;i++)
    for(j=1;j<1;j++)
        if(a[j]>a[j+1])
            a[j]与a[j+1]对换

//例题7
int m=0,i,j;
for(int u=1;i<n;i++)
    for(int j=1;j<=2*i;j++)
        m++;

 

 

所以    T(n)=O((\frac{1+\sqrt{5}}{2})^{n}) 

 

 参考:

数据结构-时间复杂度的计算方法_哔哩哔哩_bilibiliicon-default.png?t=M85Bhttps://www.bilibili.com/video/BV1mV411i7U3/?spm_id_from=333.788.recommend_more_video.1&vd_source=a2417ade71290cd940c5e2edb896b97b

【学习笔记】特征方程 - 知乎 (zhihu.com)icon-default.png?t=M85Bhttps://zhuanlan.zhihu.com/p/463176845

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小羽儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值