东北大学数据结构期末复习ppt课件.ppt
《东北大学数据结构期末复习ppt课件.ppt》由会员分享,可在线阅读,更多相关《东北大学数据结构期末复习ppt课件.ppt(134页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去期末复习期末复习火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去题型题型选择题(选择题(10分)分)填空题(填空题(10分)分)算法应用题(算法填空,简单问题回答)算法应用题(算法填空,简单问题回答)(3-4个题,个题,35-40分)分)算法设计(按照已知条件设计算法或为算算法设计(按照已知条件设计算法或为算法补充完整)(法补充完整)(3个题,个题,45-50分)分)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,
2、披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去第第1章章算法的性质及其与程序的区别算法的性质及其与程序的区别算法复杂性分析算法复杂性分析渐进意义下的四种记号渐进意义下的四种记号简单的程序段的复杂度分析简单的程序段的复杂度分析火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去算法的五个重要特征输入输入 有有零个或多个零个或多个由外部提供的量作为算法的输入由外部提供的量作为算法的输入输出输出 算法产生算法产生至少一个量至少一个量作为输出作为输出.确定性确定性 组成算法的每条指令是清晰的组成算法的每条指令是清晰的,无歧义的无歧义的.有限性有限
3、性 在执行了有穷步骤后运算终止在执行了有穷步骤后运算终止可行性可行性 运算都是基本运算,原理上能在有限时间内完成。运算都是基本运算,原理上能在有限时间内完成。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去渐进意义下的记号:O,f(N)和和g(N)是定义在正整数上的正函数是定义在正整数上的正函数定义定义1.1 1.1 如果存在两个正常数如果存在两个正常数c和和N0,对于所有的对于所有的NN0,有,有f(N)Cg(N),则记则记作:作:f(N)=O(g(N)。N0f(N)g(N)当说一个算法具有当说一个算法具有O(g(n)的计算时间时,
4、指的的计算时间时,指的就是如果此算法用就是如果此算法用n值不变的同一类数据在某台值不变的同一类数据在某台机器上运行时,所用的时间总是小于机器上运行时,所用的时间总是小于g(n)的一个的一个常数倍。常数倍。g(n)是计算时间是计算时间f(n)的一个上界函数,的一个上界函数,f(n)的数的数量级就是量级就是g(n)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去符号符号的定义的定义定义定义1.2 如果存在两个正常数如果存在两个正常数C和自然数和自然数N0,使得当使得当N N0时有时有f(N)Cg(N),则称函数,则称函数f(N)当当N充分
5、大时下有界;且充分大时下有界;且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充分
6、大时的阶比充分大时的阶比g(N)低,记为低,记为f(N)=o(g(N)例如:例如:4NlogN+7=o(3N2+4NlogN+7)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去1.2 算法分析初步多项式时间算法多项式时间算法(polynomial time algorithm):可用多项式可用多项式来对其计算时间限界的来对其计算时间限界的算法算法O(1)O(logn)O(n)O(nlogn)O(n2)O(n3)指数时间算法指数
7、时间算法(exponential time algorithm):计算时间用计算时间用指数函数限界的算法指数函数限界的算法O(2n)O(n!)O(nn)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去作业作业1-7火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去第第2章章 递归递归分治法基本思想分治法基本思想二分搜索算法二分搜索算法Strassen矩阵乘法矩阵乘法合并排序和快速排序合并排序和快速排序火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或
8、裹上湿毛毯、湿被褥勇敢地冲出去递归复杂度分析火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去汉诺塔移动次数M(1)=1M(n)=2M(n-1)+1 =22M(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-12.1 递归递归火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去分治法的基本思想分治法的基本思想分而治之
9、方法与软件设计的模块化方法非常分而治之方法与软件设计的模块化方法非常相似。为了解决一个大的问题,可以:相似。为了解决一个大的问题,可以:1)把它分成两个或多个更小的问题;把它分成两个或多个更小的问题;2)分别解决每个小问题;分别解决每个小问题;3)把各小问题的解答组合起来,即可得到原把各小问题的解答组合起来,即可得到原问题的解答。小问题通常与原问题相似,问题的解答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决。可以递归地使用分而治之策略来解决。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例例2-6 在在9,12,15,
10、27,39中分别查找中分别查找27,12,149 12 15 27 390 1 2 3 4 left right midmid=(left+right)/2=(0+4)/2=2mid=(3+4)/2=39 12 15 27 39leftrightmid查找查找27成功返成功返回回3,leftrightmid9 12 15 27 39leftright火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去template intint BinarySearch(T a,T a,const T&xconst T&x,int nint n)/在在
11、a0=a1=amiddle)left=;else right=;return 1;/未找到未找到xn-1n-10 0left=rightleft1时,时,Tw(n)=Tw(n/2)+1,T(1)=1Tw(n)=Tw(n/2)+1 =Tw(n/4)+1+1 =Tw(1)+1+.+1=1+k=1+logn火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去二分搜索的时间复杂度 最坏情况下的成功检索计算时间最坏情况下的成功检索计算时间(logn)最坏情况下的不成功检索计算时间最坏情况下的不成功检索计算时间(logn)最好情况下的成功检索计算时间
12、最好情况下的成功检索计算时间(1)最好情况下的不成功检索计算时间最好情况下的不成功检索计算时间(logn)每种不成功的检索时间都为每种不成功的检索时间都为(logn)2.2二分搜索技术二分搜索技术火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去作业:1.P34,2-2 中第二个和第中第二个和第五个算法的正确性,错误五个算法的正确性,错误的说明原因或者给出反例的说明原因或者给出反例2.P35,2-3火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去2-3:二分搜索中当程序停止时,
13、左右指针或者指向同一个元素,此时该元素等于待查找元素或者left=right+1,此时right指向的为比待找元素小的元素,left为比待找元素大的元素火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去 归并排序主程序伪代码归并排序主程序伪代码templatevoid MergeSort(Type a,int left,int right)/Aleft:right是一个全程数组,含有是一个全程数组,含有 right-left+1个待排个待排序的元素。序的元素。if()/至少有至少有2个元素个元素 int mid=(left+right)
14、/2;/求当前数组的分割点求当前数组的分割点 MergeSort(a,left,mid);MergeSort(a,mid+1,right);Merge(a,b,left,mid,right);copy(a,b,left,right););left right递归调用,分别对分递归调用,分别对分解出来的两个子问题解出来的两个子问题排序排序合并两个排好序的子合并两个排好序的子问题,放入另一个数问题,放入另一个数组组b中中2.4合并排序合并排序火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去考虑数组a的两段为1,7,8,9和2,3,4,51
15、,7,8,92,3,4,51,7,8,92,3,4,511,21,7,8,92,3,4,51,2,31,7,8,92,3,4,51,2,3,41,7,8,92,3,4,51,2,3,4,5数组数组a的两部分的两部分数组数组b1,2,3,4,5,71,2,3,4,5,7,81,2,3,4,5,7,8,9在移动扫描指针的同时,在移动扫描指针的同时,要判断其是否已经到达数要判断其是否已经到达数组的尾部,如到达,则停组的尾部,如到达,则停止扫描,把未参加排序的止扫描,把未参加排序的数全部放入备用数组中数全部放入备用数组中2.4合并排序合并排序火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断
16、,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去合并函数templatevoid Merge(Type a,Type b,int l,int m,int r)/合并合并al:m和和am+1:r到到bl:r int i=l;j=m+1,k=l;while()&()if(a i m)for(int q=j;q=r;q+)b k+=a q;else for(int q=I;q=m;q+)b k+=a q;把把al:m和和am+1:r中的数中的数据进行比较,按顺据进行比较,按顺序放入序放入b中中如果前一段数据如果前一段数据小于后一段的多,小于后一段的多,则先排完,把后则先排完,把后段剩余数赋给段剩余数
17、赋给bn,否则将前段否则将前段数据赋给数据赋给bn前半段指针前半段指针后半段指针后半段指针数组数组b的下标指针的下标指针i=mj=r2.4合并排序合并排序火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去作业分析分析merge函数最好与最坏的键值比较次函数最好与最坏的键值比较次数。数。最好比较最好比较1次次最差比较最差比较m+n-1,m和和n分别为两段数组的长度分别为两段数组的长度火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去快速排序Templatevoid QuickSor
18、t(Type a,int p,int r)if(pr)int q=Partition(a,p,r);QuickSort(a,p,q-1);/对左半段排序 QuickSort(a,q+1,r);/对右半段排序 a的起始位的起始位置置A的终止位置的终止位置Partition函数负责将函数负责将a进行一次分割,返回进行一次分割,返回分割元素的位置分割元素的位置快速排序问题快速排序问题火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去划分程序 templateint Partition(Type a,int p,int r)int i=,j=;
19、Type x=;while(true)while(a+i x);if()break;Swap(a i,a j );a p =;a j =;return j;快速排序问题快速排序问题pr+1a p i=ja j x左侧扫描指针起左侧扫描指针起始始右侧扫描指针起右侧扫描指针起始始中轴元素中轴元素移动左侧扫描指移动左侧扫描指针针移动右侧扫描指针移动右侧扫描指针火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去算法分析算法分析最坏情况:划分的两个区域分别包含最坏情况:划分的两个区域分别包含n1个元素和个元素和1个元素,如果每一步都出现这种个元素
20、,如果每一步都出现这种情况,其复杂性情况,其复杂性T(n)O(1)n1 T(n)=T(n-1)+O(n)n1解得:解得:T(n)=O(n2)快速排序问题快速排序问题火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去最好情况最好情况每次划分所取的基准都恰好为中值,即每每次划分所取的基准都恰好为中值,即每次划分都产生两个大小为次划分都产生两个大小为n/2的区域,的区域,O(1)n1 T(n)=2T(n/2)+O(n)n1T(n)=O(nlogn)快速排序问题快速排序问题火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的
21、衣服或裹上湿毛毯、湿被褥勇敢地冲出去2-19将算法Partition中的不等号反向火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去第第3章章动态规划思想,基本要素动态规划思想,基本要素矩阵连乘算法及最优解构造矩阵连乘算法及最优解构造0-1背包问题最优值及最优解背包问题最优值及最优解最优二叉搜索树最优二叉搜索树(通过具体实例弄清每个算法的流程及算法(通过具体实例弄清每个算法的流程及算法的具体实现)的具体实现)火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去动态规划算法动态规划算
22、法 将待求解的问题分解成若干个子问题,将待求解的问题分解成若干个子问题,先求解子问题,并存储子问题的解先求解子问题,并存储子问题的解而而避免计算重复的子问题避免计算重复的子问题,再由子,再由子问题的解得到原问题的解。问题的解得到原问题的解。算法思想算法思想火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去动态规划算法的基本要素动态规划算法的基本要素1 最优子结构性质最优子结构性质2 重叠子问题性质重叠子问题性质火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去1.最优子结构最优子
23、结构当问题的最优解包含了其子问题的最优解当问题的最优解包含了其子问题的最优解时,称该问题具有时,称该问题具有最优子结构性质最优子结构性质。分析最优子结构性质时,一般假设由问题分析最优子结构性质时,一般假设由问题的最优解导出的子问题不是最优的,然后的最优解导出的子问题不是最优的,然后再设法说明在这个假设下可以构造出一个再设法说明在这个假设下可以构造出一个比原问题更优解更好的解,从而导出矛盾。比原问题更优解更好的解,从而导出矛盾。动态规划算法的基本要素动态规划算法的基本要素火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去2.重叠子问题重叠
24、子问题在用递归算法自顶向下解此问题时,每次在用递归算法自顶向下解此问题时,每次产生的子问题并不总是新问题,有些子问产生的子问题并不总是新问题,有些子问题被反复计算多次。动态规划算法对每个题被反复计算多次。动态规划算法对每个问题只解一次,而后将其解保存在一个表问题只解一次,而后将其解保存在一个表格中,当再次需要解此问题时,用常数时格中,当再次需要解此问题时,用常数时间查看一下结果。因此,用动态规划算法间查看一下结果。因此,用动态规划算法通常只需要多项式时间。通常只需要多项式时间。动态规划算法的基本要素动态规划算法的基本要素火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣
25、服或裹上湿毛毯、湿被褥勇敢地冲出去动态规划与分治的联系区别动态规划与分治的联系区别都是分解成子问题,由子问题的解得到原都是分解成子问题,由子问题的解得到原问题的解。问题的解。分治中子问题相互独立,而动态规划中子分治中子问题相互独立,而动态规划中子问题互相有联系,且存在重复计算,即存问题互相有联系,且存在重复计算,即存在在重叠子问题重叠子问题。火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去动态规划算法设计步骤动态规划算法设计步骤(1)找出最优解的性质,刻画其结构特征)找出最优解的性质,刻画其结构特征(2)递归地定义最优值)递归地定义最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 数据结构 期末 复习 ppt 课件
限制150内