- 1、本文档共75页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
图1.6多种数量级的时间复杂度图示例1-4:已知一个算法中有如下最耗时的程序段:for(i=1;in;i++) for(j=i;j=n;j++)x++;求:(1)语句x++的执行频度;(2)该算法的时间复杂度解:(1)语句x++的执行频度为: n+(n-1)+(n-2)+…+3+2+1=n(n+1)/2(2)由于n(n+1)/2与n2的增长率相同,所以该算法的时间复杂度为O(n2)。例1-5分别求下面两个算法的时间复杂度。(1)算法1:floatsum1(intn)/*计算1!+2!+...+n!*/{p=1;sum1=0;for(i=1;i=n;++i){p=p*i;sum1=sum1+p}}(2)算法2:floatsum2(intn)/*计算1![KG-*3]+2![KG-*3]+...+n!*/{sum2=0;for(i=1;i=n;++i){p=1;for(j=1;j=i;++j)p=p*j;sum2=sum2+p;}}解:(1)显然,算法中执行频度最大的语句是p=p*i和sum1=sum1+p,其执行频度均为n,所以算法的时间复杂度为O(n)。(2)算法中执行频度最大的语句是p=p*j,其执行频度为n(n+1)/2,所以算法的时间复杂度为O(n2)。5)最坏时间复杂度算法中基本操作重复执行的次数还随问题的输入数据集的不同而不同。例如下面冒泡排序算法:voidbubble(inta[],intlength){将a中整数数组重新排序,达到递增有序}inti=0,j,temp;intchange;do{change=false;for(j=1;jlength-i;j++)if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;change=true;}i=i+1;}while(ilength||change==true)}6)算法的空间复杂度关于算法的存储空间需求,类似于算法的时间复杂度,我们采用空间复杂度作为算法所需存储空间的量度,记作:S(n)=O(f(n))1.6关于学习数据结构1.数据结构课程的地位图1.7数据结构与其它课程的关系2.“数据结构”课程的学习特点“数据结构”课程的教学目标是要求学生学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及相应算法,初步掌握算法时间空间分析的技巧,培养良好的程序设计技能。人类解决问题思维方式可分为两大类:一类是推理方式,凭借公理系统思维方法,从抽象公理体系出发,通过演绎、归纳、推理来求证结果,解决特定问题;另一类是算法方式,凭借算法构造思维方式,从具体操作规范入手,通过操作过程的构造和实施,解决特定问题。3.关于本书内容编写的说明本书基本结构本书的基本结构分为三个部分:第一部分:数据结构的基本概念(第1章)。第二部分:基本的数据结构,包括:线性结构——线性表、栈和队列、串、数组与广义表(第2~5章);非线性结构——树、图(第6、7章)。第三部分:基本技术,包括:查找技术与排序技术(第8、9、10章)。2)本书内容编排模式本书所列出的程序均在TurboC2.0下调试通过,所有算法均采用C语言描述,只需加以必要的类型定义(参见本章中的C语言部分的类型定义)与调用,即可上机运行使用。本书每章都附有习题与实习题,以便于读者做配套练习。表
文档评论(0)