- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章_归纳法
第5章 归纳法 5.1 引言 5.2 两个简单的例子 5.2.1 选择排序法 5.2.2 插入排序法 5.3 基数排序法 5.4 整数幂 5.5 多项式求值(Horner规则) 5.x 归纳法应用(汉诺塔问题) 5.1 引言 5.4 整数幂 ㈠概述 求实数x的n次幂的直接方法是: * 考虑一个带有参数n的问题,在问题的实例中,n通常表示事物的数目。 当我们寻找这类问题解时,可从求解一个带有小一点参数的相同问题开始,例如参数为n-1、n/2等;然后再把解推广到包含n个物体的实例,这样问题的解决就比较容易。这种方法是基于众所周知的数学归纳法。 在本章讨论的算法中,一般只调用一次递归,通常称它为尾递归。在大多数情况下,尾递归可以方便地转换为迭代过程(非递归过程)。 5.2 二个简单的例子 5.2.1 选择排序法 ㈠算法描述 ⑴数组A[1..n]中n个元素的排序,可视为在n个元素中选择一个最小的数,将它和A[1]交换,然后将问题归纳为对A[2..n]中n-1个元素排序。 ⑵数组A[2..n]中n-1个元素的排序,可视为在n-1个元素中选择一个最小的数,将它和A[2]交换,然后将问题归纳为对A[3..n]中n-2个元素排序。 ⑶…………………………………………。 ⑷数组A[n-1..n]中2个元素的排序,可视为在2个元素中选择一个较小的数,将它和A[n-1]交换。因余下元素仅为1个,排序终止。 算法5.1 SelectionSortRec(91) 输入:n个元素的数组A[1..n] 输出:按升序排列的数组A[1..n] 1. Sort(1) 过程 Sort(i) 1. if in then 2. k←i 3. for j←i+1 to n 4. if A[j]A[k] then k←j 5. end for 6. if k≠i then 交换A[i]和A[k] 7. Sort (i+1) 8. end if 例:A[1..4]={100,2,4,77} //设A[1..n]为全程量 Sort(1) i=1n=4 {100,2,4,77} {2,100,4,77} Sort(2) i=2n=4 {2,100,4,77} {2,4,100,77} Sort(3) i=3n=4 {2,4,100,77} {2,4,77,100} Sort(4) i=4≮n=4 返回 这个递推式的解为: ㈡算法分析 令C(n)表示对n个元素排序所需的比较次数,显然C(1)=0。过程Sort第一次被调用时,i等于1。数组A[1..n]有n个元素,总的比较次数为:n-1次元素比较,加上对子数组A[2..n]排序所需的比较次数,即C(n)=(n-1)+C(n-1)。过程Sort第二次被调用时,i等于2。子数组A[2..n]有n-1个元素,总的比较次数为:n-2次元素比较,加上对子数组A[3..n]排序所需的比较次数,即C(n-1)=(n-2)+C(n-2)。由此可得下列递推式 5.2.2 插入排序法 ㈠算法描述 ⑴对数组A[1..n]中n个元素排序,可假设A[1..n-1]已有序,将A[n]插入到适当位置,使得A[1..n]有序。 ⑵对数组A[1..n-1]中n-1个元素排序,可假设A[1..n-2]已有序,将A[n-1]插入到适当位置,使得A[1..n-1]有序。 ⑶…………………………………。 ⑷对数组A[1..2]中2个元素施行排序。显然A[1]有序,将A[2]插入到适当位置,使得A[1..2]有序,递归过程终止。 算法5.2 InsertionSortRec(92) 输入:n个元素的数组A[1..n] 输出:按升序排列的数组A[1..n] 1. Sort (n) 过程 Sort (i) 1. if i1 then 2. Sort(i-1) //A[1..i-1]已有序 3. x←A[i] //将A[i]插入,使得A[1..i]有序。 4. j←i-1 5. while (j0) and (A[j]x) 6. A[j+1]←A[j] 7. j←j-1 8. end while 9. A[j+1]←x 10. end if 例:A[1..4]={100,2,4,77} //设A[1..n]为全程量 Sort(4) i=41 Sort(3) {2,4,100, 77} {2,4,77,100} i=31 Sort(2) {2,100,4,77} {2,4,100, 77} i=21 Sort(1) {100,2
文档评论(0)