渐进复杂度

本文详细介绍了算法的定义,强调了算法效率的重要性,包括时间效率和空间效率。通过实例分析了如何衡量算法的时间复杂度,并提出了渐进时间复杂度的概念。同时,讨论了在优化算法时面临的效率与空间之间的权衡。此外,还提及了渐进空间复杂度以及抽象数据类型的概念。
摘要由CSDN通过智能技术生成

1.算法定义:对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。
算法描述:自然语言 流程图 伪代码 程序代码
2.算法效率(好的算法具备正确性,健壮性和可读性)
时间效率:指的是算法所耗费的时间
空间效率:指的是算法执行过程中所耗费的存储空间
时间效率与空间效率有时候是矛盾的。
3.算法时间效率的度量:事后统计(将算法实现,测算时间)和事前分析(对算法耗费资源的一种估算)
算法运行时间=一个简单操作时间*简单操作次数
(每条语句频度 * 该语句执行一次所需的时间)
例如 (将一次时间看为单位时间):

for (i=1;i<=n;i++)//n+1次
for(j=1;j<=n;j++){ //n(n+1)次
c[i][j]=0;//n*n次
for (k=0;k<n;k++)//n*n*(n+1)次
c[i][j]=c[i][j]+a[i][k]*b[k][i];//n*n*n次
}

若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=Of(n),称Of(n)为算法的渐进时间复杂度,简称时间复杂度。
分析算法中次数最多的语句就可以分析渐进时间复杂度。
4定理
取最高次数方为O(n)

x=0;y=0
for (int i=1;i<n;i++)//n+1次
x++;//n次
for(int j=1;j<n;j++){ //n+1次
for (int k=0;k<n;k++)//n*(n+1)次
y++;//n*n
}
T(n)=O(n平方)

时间复杂度是由嵌套最深层语句的频度决定。

for (i=1;i<=n;i++)//n+1次
for(j=1;j<=n;j++){ //n(n+1)次
c[i][j]=0;//n*n次
for (k=0;k<n;k++)//n*n*(n+1)次
c[i][j]=c[i][j]+a[i][k]*b[k][i];//n*n*n次
}
T(n)=O(n3次方)

在这里插入图片描述
在这里插入图片描述
5渐进空间复杂度
算法要占据的空间:算法本身要占据的空间,输入,输出,指令,常数,变量等以及与算法所需要的辅助空间。
例如:
将一维数组中a中的n个数逆序放到原数组中
6.抽象数据类型=数据的逻辑结构+抽象运算(运算的功能描述)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值