




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、定义:定义:设设一个算法的输入规模一个算法的输入规模为为n,Dn是所有输入是所有输入的的集合,集合,任任一输入一输入IDn,P(I)是是I出现出现的概率,有的概率,有 ,T(I)是算是算法在输入法在输入I下的执行时间,则算法的下的执行时间,则算法的平均时间复杂平均时间复杂度度为:为:nDIITIPnA)()()(nDIIP1)(1/14例如,例如,10个个110的的整数序列递增整数序列递增排序:排序:n=10I1=1,2,3,4,5,6,7,8,9,10I2=2,1,3,4,5,6,7,8,9,10Im=10,9,8,7,6,5,4,3,2,1构成构成Dn,P(I)=1/m所有可能的初始序列有
2、所有可能的初始序列有m个,个,m=10!2/14IDn算法的算法的最坏时间复杂最坏时间复杂度度为:为:W(n)=MAXT(I)IDn算法的算法的最好时间复杂最好时间复杂度度为:为:B(n)=MINT(I)一种或几种特殊情况3/14 【例例1-8】设计一设计一个个算法,求算法,求含含n个整数元素的序列中前个整数元素的序列中前i(1in)个元素的最大值。并分析算法的平均时间复杂度。)个元素的最大值。并分析算法的平均时间复杂度。解:解:整数序列用数组整数序列用数组a表示,前表示,前i(1in)个个元素为元素为a0.i- -1。4/14解:解:i的取值范围为的取值范围为1n(共(共n种情况),对于种情
3、况),对于求前求前i个元个元素的最大素的最大值值时,需要时,需要元素比较元素比较(i- -1)- -1+1=i- -1次。在次。在等等概率情概率情况(每种情况的概率为况(每种情况的概率为1/n):):该算法的该算法的最坏复杂度最坏复杂度:W(n)=O(n)(当(当i=n时)时)该算法的该算法的最好复杂度最好复杂度:B(n)=O(1)(当(当i=1时)时)= O(n)平均时间复杂度平均时间复杂度5/14递归算法是指算法中出现调用自己的成分。递归算法是指算法中出现调用自己的成分。递归算法分析也称为递归算法分析也称为变长时空分析变长时空分析。非递归算法分析也称为非递归算法分析也称为定长时空分析定长时
4、空分析。6/14 【例例1-9】 有有如下递归算法如下递归算法:调用上述算法的语句调用上述算法的语句为为fun(a,n,0),求,求其时间复杂度。其时间复杂度。void fun(int a,int n,int k) /数组数组a共有共有n个元素个元素 int i; if (k=n-1) for (i=0;in;i+) /n次次 printf(%dn,ai); else for (i=k;in;i+)/n-k次次 ai=ai+i*i; fun(a,n,k+1); 7/14void fun(int a,int n,int k) /数组数组a共有共有n个元素个元素 int i; if (k=n-1)
5、 for (i=0;in;i+) /n次次 printf(%dn,ai); else for (i=k;in;i+)/n-k次次 ai=ai+i*i; fun(a,n,k+1); 递归算法递归算法:错误错误fun(a,n,0)的时间复杂度为的时间复杂度为O(n)。含一重循环含一重循环8/14 则则 T(n) = T1(n,0) = n+T1(n,1) = n+(n- -1)+T1(n,2) = = n+(n- -1)+2+T1(n,n- -1) = n+(n- -1)+ +2+n = O(n2) 解:解:设设fun(a,n,0)的执行时间为的执行时间为T(n),fun(a,n,k)的的执行时间
6、执行时间为为T1(n,k) T(n) = T1(n,0)。所以所以调用调用fun(a,n,0)的时间复杂度为的时间复杂度为O(n2)。9/14T1(n,k) = n 当当k=n- -1时时T1(n,k) = (n- -k)+T1(n,k+1) 其他情况其他情况由由fun()递归算法可知:递归算法可知:void fun(int a,int n,int k) /数组数组a共有共有n个元素个元素 int i; if (k=n-1)for (i=0;in;i+) /n次次 printf(%dn,ai); else for (i=k;in;i+)/n-k次次 ai=ai+i*i; fun(a,n,k+1
7、); 【例例1-11】有如下递归算法,分析调用有如下递归算法,分析调用fun(a,n,0)的空的空间复杂度。间复杂度。 10/14void fun(int a,int n,int k) /数组数组a共有共有n个元素个元素 int i; if (k=n-1)for (i=0;in;i+) /n次次 printf(%dn,ai); else for (i=k;in;i+)/n-k次次 ai=ai+i*i; fun(a,n,k+1); 递归算法:递归算法: 错误错误fun(a,n,0)的空间复杂度为的空间复杂度为O(1)。仅仅定义了一个临时变量仅仅定义了一个临时变量i11/14解:解:设设fun(a,n,0)的空间为的空间为S(n),fun(a,n,k)的空间为的空间为S1(n,k) S(n) = S1(n,0)。则:则: S(n) = S1(n,0) = 1+S1(n,1) = 1+1+S1(n,2) = = 1 + 1 + + 1 = O(n)n个个1所以所以调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024药品代理合同(32篇)
- 2025至2030年中国数字电路实验仪数据监测研究报告
- 《故都的秋》教学设计 2024-2025学年统编版高中语文必修上册
- 2025至2030年中国排球中胎数据监测研究报告
- 商务英语翻译合同术语及公司介绍术语及
- 大型仪器服务平台升级改造项目概述
- 产业数字化科技创新园项目投资估算与资金筹措
- 突发环境事件应急预案
- 2025年度解除劳动合同经济补偿金发放与员工职业规划合同
- 二零二五年度建筑安全标准规范执行协议
- 高血压脑出血相关的课件
- 江苏省初中美术学业水平考试参考复习题库(含答案)
- 短视频运营实战:抖音短视频运营
- 设备维保的关键绩效指标与评估
- 三亚市崖州中心渔港停泊避风水域扩建项目 环评报告
- 2024年工贸行业安全知识考试题库500题(含答案)
- 《指南针》完整版
- 深圳人才公园功能分析报告
- 大学生创新创业基础教程(高职“创新创业”课程)全套教学课件
- 《核医学辐射防护》课件
- 入托入学儿童预防接种证查验接种证工作课件
评论
0/150
提交评论