算法与算法分析基础

数据结构:
在这里插入图片描述

时间复杂度:

已知 f(n) 来说,求g(n)
表达式中相乘的常量,可以省略,如
f(n)=100*n2中的100

多项式中数量规模更小 (低次项) 的表达式,如
f(n)=n2+n中的n
f(n)=n+n2中的n2

不同底数的对数,渐进上界可以用一个对数函数logn表示
例如: log2(n)可以替换为 log10(n),因为 log2(n)=log10(n)/log10(2),相乘的常量1/log10(2)可以省略
类似的,对数的常数次幂可省略
如: log(n)=c*log(n)

若有某个辅助函数f(n),使得当n趋近于无穷大时T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n))称O(f(n))为算法的渐进时间复杂度(O是数量级的符号),简称时间复杂度

对于求解矩阵相乘问题,算法耗费时间.
T(n)=2n3 + 3n2+ 2n + 1n时,T(n)/n3……=2,这表示n充分大时,T(n)与n3是同阶或同数量级,引入大“O”记号,则T(n)可记作:T(n) = O(n3)

算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作: T(n)=O(f(n))
1.算法中重复执行次数和算法的执行时间成正比的语句
2.对算法运行时间的贡献
3.最大执行次数最多

n越大算法的执行时间越长
排序: n为记录数
矩阵:n为矩阵的阶数
多项式:n为多项式的项数
集合: n为元素个数
树: n为树的结点个数
图: n为图的顶点数或边数

分析算法时间复杂度的基本方法
1.找出语句频度最大的那条语句作为基本语句
2.计算基本语句的频度得到问题规模 n的某个函数 f(n)
3.取其数量级用符号“O”表示

时间复杂度T按数量级递增顺序为:
在这里插入图片描述

空间复杂度:
算法所需存储空间的度量
记作: S(n)=O(f(n))
其中n为问题的规模(或大小)

将一维数组a中的n个数逆序存放到原数组中
[算法1]S(n)=O(1)

t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}

[算法2]S(n)=O(n)

b[i]=a[n-i-1];
for(i=0;i<n;i+ +)
a[i]=b[i];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值