第6部分_数组.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
方法2 将硬币分为8组,每组2个,每组比较一次,若发现轻的,则为伪币。最多可能有8次比较。 * The C Programming Language * 方法3 * The C Programming Language * 分2组,比较1次 分2组,比较2次 分2组,比较3次 分2组,比较4次 方法4 * The C Programming Language * 分3组,比较1次 分3组,比较2次 分3组,比较2次 分3组,比较3次 分3组,比较3次 分治思想 所谓分治,就字面意思而言,就是分而治之,将一个大的问题分解成为若干个小的子问题,然后递归求解子问题,最后合并这些子问题的结果就得到原问题的解了 可以用很简单的话来形容分治:“大事化小,小事化了” 有将问题一分为二、一分为三、一分为N 当n=2时的分治法又称二分法 * The C Programming Language * 分治法 书后习题9:有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无次数”。 * The C Programming Language * 循序渐进——动态规划 动态规划 ?每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 * The C Programming Language * 适用情况 最优化原理:问题的最优解所包含的子问题的解也是最优。 无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。 有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。 * The C Programming Language * n=5时分治法计算斐波那契数的过程。 F(5) F(4) F(3) F(3) F(2) F(2) F(1) F(2) F(1) F(1) F(0) F(1) F(0) F(1) F(0) 0 1 2 3 4 5 6 7 8 9 0 1 1 2 3 5 8 13 21 34 动态规划法求解斐波那契数F(9)的填表过程 : 注意到,计算F(n)是以计算它的两个重叠子问题 F(n-1)和F(n-2)的形式来表达的,所以,可以设计一张表填入n+1个F(n)的值。 * The C Programming Language * * The C Programming Language * 排序 例6-3 10个地区的面积,要求对它们由小到大的顺序排序。 书后习题2 用选择法对10个整数进行排序。 * The C Programming Language * 比较交换法 比较交换法: 对n个数进行排序 将第1个数与第2个数到第n个数依次比较,如果score[0] score[j] (j=2,3,…,n),则交换score[0]、score[J]的内容; 将第2个数与第3个数到第N个数依次比较,如果score[1] score[j] (j=3,4,…,n),则交换score[1]、score[J]的内容; 重复以上方法,将第i个数与第i+1个数到第n个数依次比较,如果score[i]score[j] (j=I+1,…,n),则交换score[i]、score[j]的内容 共重复n-1轮 * The C Programming Language * 比较交换法 * The C Programming Language * 选择排序法 选择排序法: 对n个数进行排序 将第1个数与第2个数到第N个数依次比较,找出第一个数到第n个数中的最小值,记下起位置p,交换score[0]与score[P]的值 将第2个数与第3个数到第n个数依次比较,找出第2个数到第n个数中的最小值,记下起位置p,交换score[1]与score[P]的值 重复以上方法,将第i个数与第i+1个数到第n个数依次比较,找出第i个数到第n个数中的最小值,记下起位置p,交换score[i]与score[P]的值 共重复n-1轮 * The C Programming Language * 选择排序法 原始数据 8 6 9 3 2 7 a(1) a(2) a(3) a(4) a(5) a(6) 第 1 趟交换后 2 6 9 3 8 7 a(2) a(3) a(4) a(5) a(6) 第 2 趟交换后 2 3 9 6 8 7 a(3)

文档评论(0)

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

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

1亿VIP精品文档

相关文档