- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 解:设fun(a,n,0)的时间复杂度为T(n),则fun(a,n,k)的执行时间为T1(n,k),由fun()算法可知: T1(n,k)=n 当k=n-1时 T1(n,k)= (n-k)+T1(n,k+1) 其他情况 则 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)的时间复杂度为O(n2)。? * 空间复杂度是对一个算法在运行过程中临时占用的存储空间大小的量度,一般也作为问题规模n的函数,以数量级形式给出,记作: S(n) = O(g(n)) 若所需额外空间相对于输入数据量来说是常数,则称此算法为原地工作。若所需存储量依赖于特定的输入,则通常按最坏情况考虑。 1.3.2 算法空间复杂度分析 返回 * 例1.8 分析例1.4和例1.5的空间复杂度。 解:由于这两个算法中临时变量的个数与问题规模n无关,所以空间复杂度均为O(1)。 * 1.4 数据结构+算法=程序 数据结构对算法的影响主要在两方面 (1)数据结构的存储能力 数据结构存储能力强、存储信息多=>算法将会较好设计(时间少),存储空间大。 时间和空间的平衡(时空折中) (2)定义在数据结构上的操作 在数据结构上定义基本操作=>算法调用这些基本操作。 * 基本操作越完整,算法设计就越容易 算法 基本操作 基本算法 应用程序 应用程序是通过调用基本算法实现的 * 选择数据结构需要考虑的几个方面: (1)数据结构要适应问题的状态描述 (2)数据结构应与所选择的算法相适应 (3)数据结构的选择同时要兼顾程序设计的方便 (4)灵活应用已有知识 * 例如,有若干学生数据(学生数小于50),每个学生数据包含学号(每个学生学号是惟一的,但学生记录不一定按学号顺序存放)、姓名、班号和若干门课程成绩(每个学生所选课程数目可能不等,但最多不超过6门)。 要求设计一个程序输出每个学生的学号、姓名和平均分以及每门课程(课程编号从1~6)的平均分。 * 设计方案1:将学生的全部数据项放在一个表中,一个学生的全部数据对应一条记录。由于课程最多可选6门,对应的成绩项也应有6个。对应的数据结构如下: struct stud { int no; /*学号*/ char name[10]; /*姓名*/ int bno; /*班号*/ int deg1; /*课程1分数*/ int deg2; /*课程2分数*/ int deg3; /*课程3分数*/ int deg4; /*课程4分数*/ int deg5; /*课程5分数*/ int deg6; /*课程6分数*/ }; * no name bno deg1 deg2 deg3 deg4 deg5 deg6 1 张斌 9901 78 82 63 92 85 83 8 刘丽 9902 65 95 72 78 80 79 … … … … … … … … … 特点: 存储空间:中(若学生没有选该课程,对应空间仍存在) 算法时间:少 算法简洁性差:算法完全依赖数据结构 * 设计方案2:将学生的全部数据项放在一个表中,但一个学生的一门课程成绩对应一条记录。这样成绩项只需要一个,为了区分不同课程成绩,需增加一个课程编号项。对应的数据结构如下: struct stud { int no; /*学号*/ char name[10]; /*姓名*/ int bno; /*班号*/ int cno; /*课程编号*/ int deg; /*课程分数*/ }; * no name bno cno deg 1 张斌 9901 1 78 1 张斌 9901 2 82 1 张斌 9901 3 63 1 张斌 9901 4 92 1 张斌 9901 5 85 1 张斌 9901 6 83 8 刘丽 9902 1 65 8 刘丽 9902 2 95 8 刘丽 9902 3 72 8 刘丽 9902 4 78 8 刘丽 9902 5 80 8 刘丽 9902 6 79 … … … … … * 特点: 存储空间:大 算法时间:多 算法简洁性:好 * 设计方案3:将学生的学号、姓名和班号放在一个表中,将成绩数据放在另一个表中,两者通过学号关联。前者一个学生对应一个记录,后者一门课程成绩对应一条记录。对应的数据结构如下: struct st
文档评论(0)