- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大学本科计算机专业应用型规划教材 数据结构(C++版) 第二章 算法分析 2.1 什么是算法分析 2.2 算法运行时间举例 2.3 最大连续子序列之和问题 2.4 通用Big-Oh规则 2.5 对数 2.6 静态有哪些信誉好的足球投注网站问题 2.7 检验一个算法分析 2.8 Big-Oh分析法的限制 2.1 什么是算法分析 任何算法花费的运行时间取决于它所要处理的数据输入量。例如,排序一万个元素比排序10个元素花费更多时间。算法的运行时间是数据输入量的一个函数,确切的函数值依赖于许多因素。例如,主机的运行速度,编译程序的质量,还有程序本身的质量。对于一个给定计算机上的给定程序,可以描绘出运行时间的函数。图2-1给出了四个程序的运行时间图,这些曲线代表了在算法分析中相遇的四个函数:线性函数、O(nlogn)、二次方函数、立方函数,输入规模n从1至100,运行时间为0至10毫秒。从图2-1和它的对比图2-2可知,线性函数,O(nlogn),平方函数,立方函数曲线所代表的函数呈有规律的递减趋向。 - - 2.2 算法运行时间举例 数组中的最小元素: 给出一个具有n项的数组,找出其最小元素。 最小元素问题是计算机科学中的基本问题,可用下列方法解决: 定义一个变量min存储最小元素; 初始化min为第一个元素; 顺序扫描整个数组,将min更改为合适的元素。 这个算法运行时间为O(n),是线性的,因为对数组中的元素重复做定量的工作,一个线性算法正是所期望的,需要测试数组中的每一个元素,这一过程需要线性的时间。 - 平面中距离最近的两点: 在平面(直角坐标系)中提供n个点,找出一对距离最近的点。 寻找距离最近点问题是图形中的基本问题,可用下列方法解决: 计算每对点间的距离。 保留最短距离。 计算比较花费时间,存在n(n-1)/2对点,大约为n2对点,测试所有对点,并找出它们中的最短距离将花费平方次的时间,一个好的算法运行O(nlogn)的时间,并避免计算所有的点。也存在一个算法只花费O(n)的时间。后两个算法通过细微的观察可快速得到一个结果。 2.3 最大连续子序列之和问题 给出n个整数(可为负)A1,A2,…,An,找出的最大值(与队列次序相同),如果所有整数为负,最大值为0。 2.3.1 简单易懂的O(n3)算法 2.3.2 一个改进的O(n2)算法 2.3.3 一个线性算法 2.3.1 简单易懂的O(n3)算法 最简单的算法就是直接穷举有哪些信誉好的足球投注网站或蛮力算法。 直接穷举有哪些信誉好的足球投注网站法的优点是非常简单。减少一个算法的复杂性,比较可能的方法就是编写程序要正确。然而,穷举有哪些信誉好的足球投注网站法的效率不可能太高。 这算法的运行时间由内部循环16和17行决定,四个表达式被重复: 初始化 k = i 测试 k = i 增长 ThisSum += a[ k ] 调整 k++ 2.3.2 一个改进的O(n2)算法 从这个算法中移走一个嵌套循环后,就降低了运行时间。怎样移走一个循环呢?显然,不能经常这样做,但是,先前的算法中有许多不必要的运算。这个需要改进的算法的低效率性就是算法2.1中的内部循环中的过度计算。改进后的算法利用了这样一个事实:,换句话说,假设已经要计算了从i到j-1子序列的值,则计算从i到j子序列的值就不会花费太长的时间,因为只需要额外加一个项,但是,立方算法抛弃了这个信息。利用这个观察到的信息得到了改进后的算法2.2,有两个而不是三个嵌套循环,运行时间为O(n2)。 2.3.3 一个线性算法 定理2.2: Ai,j为任意序列,且Si,j0,如果qj,则Ai,q不是值最大的连续子序列。 证明: 从i到q的序列的元素之和为从i到j的序列的元素之和加上从j+1到q的子序列的元素之和,则Si,q=Si,j+Sj+1,q因为Si,j0,所以Si,qSj+1,q,Ai,q不是一个最大的连续子序列。 - 定理2.3: 对于任意i,Ai,j为Si,j0的第一个序列,则对于任意i=p=j,且p=q,则 Ap,q也不是和最大的连续子序列或者只是一个与一个已经存在的和最大的连续子序列的和相等。 证明: 如果p=i,则适用于定理2.2。否则,如定理2.3,使Si,q=Si,q-1+Sp,q,j是使Si,j0的最小的下标,如果Si,p-1=0,则有Sp,q=Si,q,如果qj(如图2-5上图所示),则定理2.2表明:Ai,q不是和最大的连续子序列,Ap,q也不是,否则如图2-5下图所示,Ap,q至多与一个已经存在的子序列Ai,q的和相等。 - 定理2.3说明:当检测到一个和为负的子序列时,不仅能跳跃出内循环,而且可以将i提前到j+1,如算法2.3所示,只用一个循环就可以重写这个算法。很明显,这个算法的运行时间是线性的,在循环中的每一步,递增j,至多重复n次。 2.4 通用B
您可能关注的文档
最近下载
- 肝癌教学演示课件.pptx VIP
- 4.《水利工程设计变更管理暂行办法》(水规计〔2012〕93号).pdf VIP
- 2银保监会银行业金融机构监管数据标准化规范(2021版)数据结构一览表.xls VIP
- 课件:第一章 导论(《现代社会福利思想》课程).pdf VIP
- 地产返租协议书范本.docx VIP
- CJJT 281-2018桥梁悬臂浇筑施工技术标准.doc VIP
- 2025年中级(四级)设备点检员职业技能鉴定《理论知识》真题卷(后附答案及解析).docx VIP
- 中医治未病技术操作规范(穴位贴敷) .pdf VIP
- 《生态环境:保护》课件.ppt VIP
- Simcenter 3D电子行业推广策略.pptx VIP
文档评论(0)