3.复杂度分析

本文介绍了算法复杂度的不同级别,包括常数O(1)、对数O(logn)、线性O(n)、多项式及指数复杂度,并讨论了算法分析的方法如迭代、递归及猜测加验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复杂度分析

    在算法复杂度度量的三种记号中,大O记号是最常用的。从渐进的角度分析,大O记号把各算法的复杂度由低到高划分为很多层次,现在逐一进行介绍。

1.常数O(1)

    运行时间可表示为T(n)=O(1)的这一类算法,统称为“常数时间复杂度算法”。若代码中不含转向(循环,调用,递归等)必顺序执行,其复杂度即是O(1)。此类算法是最理想的。

2.对数O(logn)

    运行时间可表示为 的这一类算法,统称为“对数多项式时间复杂度的算法”。在用函数 界定复杂度时,常数底r的取值无所谓,故通常不予专门标出而笼统的记为logn。

3.线性O(n)

    运行时间可表示为T(n)=O(n)的这一类算法,统称为“线性时间复杂度算法”。

4.多项式

     (c>0)属于多项式,凡是多项式复杂度,即可视作可解。可解,至少还不是难解。

5.指数

    运行时间可表示为 的这一类算法(a>1),统称为“指数时间复杂度算法”。对于任意的c>1, 。这类算法的计算成本增长极快,通常被认为不可忍受。从 是有效算法到无效算法的分水岭。
    算法分析:两个任务=正确性(不变性*单调性)+复杂度。
    算法分析的主要方法:1)迭代:级数求和;2)递归:递归跟踪+递归方程;3)猜测+验证。
    级数的复杂度分析

    1)算数级数:与末项同阶

    

    2)幂方级数:比幂次高出一阶

    
    
    

    3)几何级数(等比级数):与末项同阶

   

    4)收敛级数

   
   

    5)级数(未必收敛,长度有限)

    //调和级数
     //对数级数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值