DataStructures:algorithm analysis

1.算法是解决问题的指令集。单算法给定时,可以计算算法所用的时间或者空间资源。算法分析就是计算算法的时间和空间复杂度,并对算法做出优化,获取对问题更有效的计算方法。

2.当T(N)=O(f(N))(念大O),f(N)是T(N)的上界,也就是T(N)在以不快于f(N)的速度增长。f(N)=Ω(T(N))(念omega),则T(N)是f(N)的下界,T(N)=Θ(h(N))(念theta)是T(N)的增长率等于h(N)的增长率。T(N)=o(p(N))(念小o),T(N)的增长率小于p(N)的增长率,而大O包含增长率相等的可能性。

3.不要把常数项和低阶项放进大O中。可以使用计算极限lim(n->∞) f(N)/g(N)的值来确定两个函数f(N)和g(N)的相对增长率。
a.极限是0:f(N)=o(g(N))
b.极限是c!=0:f(N)=Θ(g(N))
c.极限是∞:g(N)=o(f(N))
d.极限摆动:二者没有关系

4.对算法分析是算法运行在忽略某些细节的模型上,计算其平均或者最坏的情况的时间和空间复杂度。程序实现的细节往往不会影响算法的大O结果。高效的算法往往期望数据被读入后能迅速觉解问题,而不是像低效算法占据着大量的计算资源。联机算法的特性是输入方式对算法影响不大。

5.对算法的分析要分析算法结果的准确性。当N扩大一倍时,线性程序的运行时间乘以因子2,二次程序的运行时间乘以因子4,三次程序的运行时间乘以因子8。以对数时间运行的程序,当N增加一倍时间运行只是多加一个常数,以O(NlogN)运行的程序运行时间为两倍稍多一些。如果低阶项的系数相对较大,并且N又不是足够大的时候,运行时间这种增量很难观察。验证一个程序是否是O(f(N)),可以计算T(N)/f(N),其中T(N)是经验运行时间。

6.这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值