东北大学数据结构期末复习剖析.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
期末复习 题型 选择题(10分) 填空题(10分) 算法应用题(算法填空,简单问题回答)(3-4个题,35-40分) 算法设计(按照已知条件设计算法或为算法补充完整)(3个题,45-50分) 第1章 算法的性质及其与程序的区别 算法复杂性分析 渐进意义下的四种记号 简单的程序段的复杂度分析 算法的五个重要特征 输入 有零个或多个由外部提供的量作为算法的输入 输出 算法产生至少一个量作为输出. 确定性 组成算法的每条指令是清晰的,无歧义的. 有限性 在执行了有穷步骤后运算终止 可行性 运算都是基本运算,原理上能在有限时间内完成。 渐进意义下的记号:O,?,θ,о f(N)和g(N)是定义在正整数上的正函数 定义1.1 如果存在两个正常数c和N0,对于所有的N≥N0,有f(N) ≤Cg(N),则记作:f(N)= O(g(N))。 符号?的定义 定义1.2 如果存在两个正常数C和自然数N0,使得当N ≥ N0时有f(N)≥Cg(N),则称函数f(N)当N充分大时下有界;且g(N)是它的一个下界,记为f(N)=?(g(N))。这时我们说f(N)的阶不低于g(N)的阶。 θ ,o 的定义 θ—— 定义f(N)= θ(g(N))当且仅当f(N)=O(g(N))且f(N)=?(g(N))。这时,我们说f(N)与g(N)同阶 o—— 如果对于任意给定的ε0,都存在正整数N0,使得当N ≥N0时有f(N)/g(N)ε,则称函数f(N)当N充分大时的阶比g(N)低,记为f(N)=o(g(N)) 例如:4NlogN+7=o(3N2+4NlogN+7) 作业1-7 第2章 递归 分治法基本思想 二分搜索算法 Strassen矩阵乘法 合并排序和快速排序 递归复杂度分析 汉诺塔移动次数 M(1)=1 M(n)=2M(n-1)+1 = 2[2M(n-2)+1]+1 = 22M(n-2)+2+1 = 23M(n-3)+22+2+1 =…… =2iM(n-i)+2i-1+2i-2+……+2+1 =2iM(n-i)+2i - 1 令i= n -1 则M(n)= 2n-1 + 2n-1-1=2n-1 分治法的基本思想 分而治之方法与软件设计的模块化方法非常相似。为了解决一个大的问题,可以: 把它分成两个或多个更小的问题; 分别解决每个小问题; 把各小问题的解答组合起来,即可得到原问题的解答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决。 例2-6 在[9,12,15,27,39]中分别查找27,12,14 templateclass T int BinarySearch( T a[], const T x, int n) {//在a[0]=a[1]=···=a[n-1]中搜索x //如果找到,则返回所在位置,否则返回 –1 int left= ; int right= ; while( ){ int middle= ; if(x==a[middle]) return middle; if(xa[middle]) left= ; else right= ; } return –1; //未找到x } 当n1时,Tw(n)= Tw([n/2])+1, T(1) = 1 Tw(n) = Tw([n/2]) + 1 = Tw([n/4]) +1 +1 …… =Tw(1)+1+...+1=1+k=1+logn 二分搜索的时间复杂度 最坏情况下的成功检索计算时间Θ(logn) 最坏情况下的不成功检索计算时间Θ(logn) 最好情况下的成功检索计算时间Θ(1) 最好情况下的不成功检索计算时间Θ(logn) 每种不成功的检索时间都为Θ(logn) 作业: 2-3: 二分搜索中当程序停止时,左右指针或者指向同一个元素,此时该元素等于待查找元素 或者left=right+1,此时right指向的为比待找元素小的元素,left为比待找元素大的元素 归并排序主程序伪代码 templateclass Type void MergeSort(Type a[ ], int left, int right) {// A[left:rig

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档