- 1、本文档共116页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章讲_算法引论-2016.ppt
希望找到一个不依赖于上述因素的时间度量。 问:统计算法 每步操作执行次数 作为算法的时间度量,如何? 答:无此必要,且分析复杂困难(若干变量)。 一个算法有许多操作,决定算法耗时的是那些 最费时 的操作,因此,只需统计这些最费时的操作称为基本操作。它们对算法执行时间的占用最大。 【结论】算法时间效率度量 —— 基本操作的执行次数 分析框架——运行时间的度量单位 分析框架——运行时间的度量单位 运行时间的度量单位 用算法的基本操作(算法中最重要的操作)的执行次数来度量算法的时间效率。 基本操作通常是算法最内层循环中最费时的操作。 算法运行时间的估计: T(n) ≈ copC(n) n是该算法的输入规模 cop是特定计算机上一个算法基本操作的执行时间 C(n)是该算法需要执行的基本操作的次数 问:为什么是约等于? 忽略了非基本操作执行时间 【时间效率分析例】 1 机器速度提高 10 倍,算法运行时间降低多少? 答:10 倍。因为 t 减少 10 倍,C(n) 不变。 2 设 ,输入规模 n 翻倍,算法运行时间如何变化? (n 不太小如 n = 100) 不考虑每个操作步在机器上具体的执行时间 t ,则时间耗费为: 时间耗费即基本操作数,是输入规模 n 的函数 n , n2 —— 线性、二次增长率, 2n —— 指数增长率 时间效率的类别 【考虑】算法的时间效率与特定输入有关吗? ----------------------------------------------------------------------------------------------- 【 算法 】顺序查找 【 要求 】在线性表中查找一次 给定项(键),该表有 n 个元素。 【 过程 】从表头开始,逐个比较 表中元素,直到找到匹配键的元素 或到达表尾为止(没找到)。 【 分析 】 —— 时间效率与查找键在表中的位置有关。 —— 若键位于表头,只比较一次。 最优时间效率 —— 若键位于表尾或不存在,比较 n 次。 最差时间效率 —— 若键位于表中,比较次数不定。 平均时间效率 ----------------------------------------------------------------------------------------------- 上例表明:某些算法的时间效率与输入有关。 时间效率类别:最佳、最差、平均时间效率。 * 算法举例:百鸡问题 公元5世纪末,我国古代数学家张丘建在撰写的《算经》中提出了这样一个问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百元买百鸡,问鸡翁、母、雏各几个?” 假设:a为公鸡,b为母鸡,c为小鸡 a + b + c = 100 5a + 3b + c/3 = 100 c % 3 = 0 * bool chicken(int n, int aa[], int bb[],int cc[]) { k=0; for ( int a=0; a=n; a++) { // 执行 n+2次 for (int b=0; b=n; b++) { //执行(n+1)(n+2) 次 for (int c=0; c=n; c++) { //执行(n+1)2 (n+2)次 if ((a+b+c==n)(5*a+3*b+c/3==n)(c%3==0)) { aa[k]=a; bb[k]=b; cc[k]=c; k++; //执行(n+1)3次 } } } } return true; } 当n=100时, 内循环体执行1030301次,即约100万次 * bool chicken(int n, int aa[], int bb[],int cc[]) { k=0; m=n/5; h=n/3; for ( int a=0; a=m; a++) { // 执行 n/5+2次 for (int b=0; b=h; b++) { //执行(n/5+1)(n/3+2) 次 c= n – a – b; if ((5*a+3*b+c/3==n)(c%3==0)){
您可能关注的文档
最近下载
- 年会语言类节目搞笑朗诵《我爱上班》表演.pptx
- 《马克思主义基本原理概论》教案12 资本主义的本质及规律.doc VIP
- 55种语言汉译译音表-世界人名翻译大辞典.pdf
- 我们的母亲叫中国:.pptx VIP
- 1.6+隋唐时期的中外文化交流++课件++2024-2025学年统编版七年级历史下册+.pptx VIP
- 水稻绿色高产高效创建服务 投标方案(技术方案).docx
- 医用氧自检检查记录表.pdf
- 2024辽宁沈阳市文体旅产业发展集团有限公司中层岗位招聘5人笔试备考试题及答案解析.docx
- 《国际经济法学》(第二版)课后思考题答案.pdf
- 55个单病种(术种)管理指标质量控制标准(第二部分).xlsx
文档评论(0)