(java)时间频度,时间复杂度,解析

时间频度就是参数n表示的代码条数,时间复杂度是时间频度的化简求极限

1.时间频度:根据参数来表示算法的代码执行次数(按条),

如:

例1的时间复杂度是n+1是因为要做100次total+=i 最后判断i<=end也算一次,则有100的参数需要执行101条代码

而例二是高斯求和(尾项+首项)乘尾项除2 等于 所有项的和

2.时间复杂度

把时间频度的表达式,去掉低阶项和常数项和最高价项系数就是时间复杂度

如果没有n只有常数项直接当作1,x^0=1

如果两个频度的时间复杂度一样就叫同数量级函数记作T(n) = O(f(n))

O(f(n))称为算法的渐进时间复杂度

2.1忽略常数项(∞+常数=无穷)

 学过极限应该会非常熟悉,当数趋于无穷,常数项可以忽略不记

2.2忽略低次项(高阶无穷忽略低阶无穷)

 

2.3忽略小差值系数(同是低次项忽略系数)

 

2.4常见时间复杂度

 2.4.1常数阶(参数是多少执行多少条)

 2.4.2对数阶(k的几次方等于n)

 2.4.3线性阶

 图中频度是2n+1,复杂度为n,特点执行条数随n增长

2.4.4线性对数阶(其实就是对数阶外面套了层线性阶

 2.4.5平方阶(嵌套循环外层循环m,内循环n,则= m*n

2.5平均复杂度和最差时间复杂度

就是某些算法在特定值域或数据类型的运行速度不一样这就叫做不稳定

而不管是什么数据运行速度都一样就叫稳定算法

 

 

3.空间复杂度,就是算法在运算时对参数进行预处理把大问题拆成若干个小问题

又或者把参数的因数拆解出来导出时再进行合并或把多位数每一位放一个数组格子里,这类方法虽然能提高运行速度但是会挤占内存空间堆排序就是这样的

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值