数据结构与算法设计PPT (4).pdf
《数据结构与算法设计PPT (4).pdf》由会员分享,可在线阅读,更多相关《数据结构与算法设计PPT (4).pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 绪论1.5 算法效率分析算法的事前估计:算法的事前估计:算法分析感兴趣的不是具体算法分析感兴趣的不是具体的资源占用量,而是与具体的平台无关、具体的资源占用量,而是与具体的平台无关、具体的输入实例无关,且随着规模增长的值是可预的输入实例无关,且随着规模增长的值是可预测的时间效率变化趋势。测的时间效率变化趋势。算法效率分析:算法效率分析:渐进时间复杂度渐进时间复杂度渐进空间复杂度渐进空间复杂度算法的性能分析算法的性能分析算法的执行时间分析算法的执行时间分析算法的执行时间分析算法的执行时间分析T(n)T(n)的计算的计算 程程 序序 语语 句句 一次执行一次执行 所需程序步数所需程序步数 执
2、行频度执行频度 0 0 1 1 floatfloat s=s=0.0;0.0;1 1 1 1 for(for(intint i=i=0;0;inin;i+i+)1 1 n n+1+1 s+=as+=a i i;1 1 n n returnreturn s s;1 1 1 1 0 0 1 1 总程序步数总程序步数。2 2n+3n+3 语句执行的频度语句执行的频度 2n+32n+3时间复杂度的渐进表示法程序的精确步数没有实际意义,程序步数的数量级别可以程序的精确步数没有实际意义,程序步数的数量级别可以反映程序的实质。反映程序的实质。n n:一个特定算法的“运行工作量”的大小,只依赖于问题:一个特定
3、算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量的规模(通常用整数量n n表示)表示)f(n):f(n):算法中基本操作的执行次数,即它是问题规模的函数。算法中基本操作的执行次数,即它是问题规模的函数。算法的渐进时间复杂度,简称算法时间复杂度记作:算法的渐进时间复杂度,简称算法时间复杂度记作:T(n)=O(f(n)T(n)=O(f(n)表示随问题规模表示随问题规模n n的增大,算法执行时间的增长率与的增大,算法执行时间的增长率与f(n)f(n)的的增长率相同。表示算法执行时间的增长的数量级。增长率相同。表示算法执行时间的增长的数量级。时间复杂度的渐进表示法大大O O表示法定义表示法
4、定义当当NN0NN0时存在一个正的常数时存在一个正的常数c c和和N0N0使得使得T(n)T(n)cFcF(n),(n),则(则(BigBig-OhOh)T(N)T(N)就是就是O(F(n)O(F(n)含义:当含义:当n n增大时,算法的运行时间的增长率小于增大时,算法的运行时间的增长率小于等于等于(n)(n)的增长率。的增长率。算法的渐进分析就是要估计,当数据规模逐步增大算法的渐进分析就是要估计,当数据规模逐步增大时资源开销时资源开销f(n)f(n)的增长趋势,得到一个精确的界限的增长趋势,得到一个精确的界限比较费时费力,也没有必要比较费时费力,也没有必要时间复杂度的渐进表示法从数量级大小比
5、较来考虑,当从数量级大小比较来考虑,当n n增到到一定值后,增到到一定值后,对资源开销影响最大的就是对资源开销影响最大的就是n n的幂次最高的项,所的幂次最高的项,所以使用以使用BigBig-OhOh表示法时不必考虑表示法时不必考虑常数、系数、次要常数、系数、次要项和关系符号项和关系符号。O(nO(n2 2)O(2nO(2n2 2+2n+1)+2n+1)常见的算法时间复杂度:常见的算法时间复杂度:1 1 log log2 2n n n n n nloglog2 2n n n n2 2 n n3 3 2 2n n 3 3n n n n!算法时间复杂度的分析规则算法时间复杂度的分析规则按照程序的结
6、构分析时间复杂度按照程序的结构分析时间复杂度加法规则加法规则针对并列程序段:顺序结构,针对并列程序段:顺序结构,if if结构,结构,switchswitch结构结构T(T(n n,mm)=T1()=T1(n n)+T2()+T2(mm)=O(max(=O(max(f f(n n),),g g(mm)乘法规则乘法规则针对嵌套程序段;针对嵌套程序段;forfor,whilewhile,dowhiledowhileT(T(n n,mm)=T1()=T1(n n)*T2()*T2(mm)=O(=O(f f(n n)*)*g g(mm)时间复杂度的渐进表示法分析规则时间复杂度分析例子例1:x+;s=0
7、;用频度法分析:将x+看成是基本操作,语句频度为T(n)=2算法的时间复杂度:O(1)-常量阶例2:for(i=0;in;i+)/执行n+1次x+;/语句频度为:ns+=x;/语句频度为:nT(n)=2n+n+1=3n+1,则时间复杂度为:O(n)也可以这样考虑:将x自增看成是基本操作,则语句频度为:n其时间复杂度为:O(n),即时间复杂度为线性阶。例例3:3:矩阵相乘矩阵相乘C=C=AxBAxBfor(for(i i=0;=0;i i n;n;i i+)+)/n+1/n+1for(j=0;j n;for(j=0;j n;j+j+)/n*(n+1)/n*(n+1)c ci ij=0;j=0;/
8、n n2 2for(k=0;k n;k+)/nfor(k=0;k n;k+)/n2 2*(n+1)*(n+1)c ci ij+=aj+=ai ik*bkj;/nk*bkj;/n3 3 T(n)=T(n)=2n2n3 3+3n+3n2 2+2n+1+2n+1算法的时间复杂度:算法的时间复杂度:O(nO(n3 3)计算方法计算方法1 1:由于是一个三重循环,每个循环从:由于是一个三重循环,每个循环从1 1到到n n,则总次数为,则总次数为:n n n n n n=n=n3 3故时故时间复杂度为间复杂度为T(n)=O(nT(n)=O(n3 3)。计算方法计算方法2 2:由于“乘法”运算是本例的基本操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法设计PPT 4 数据结构 算法 设计 PPT
限制150内