数据结构和算法讲义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
堆榜的应用—骑士走棋盘 西洋棋中的骑上大致上是走日字形,与中国象棋中的马有些类似。 现在来研究个问题,有没有办法让一个骑士在棋盘上不重复踏入同个格子而走遍整 个棋盘昵?这个问题可以用试误法,经过不断尝试而得到结果。堆栈的概念正可以应用在这一类需要使用“试误法”解决的问题。 (1)把骑士放入棋盘的某个起始位置, 并记录下这个位置己经被践踏过一回 (2) 由第1种步法开始尝试,看看下步所踏出去的位置是不是还没有被踩过。如果没有踩过就可以走下去,如果踩过,就换下一种步法来尝试。 (3) 如果8 种步法都踏不出去,代表前一步已进入死胡同,要赶紧回头一步。回过头后,还要查出原本踏入这个死胡同所使用的步法为何,不再使用它,换下种步法来走走看。 (4) 当整个棋盘都踏遍后,就找到了一个解。 这时还可以再把骑士退回步,试用新的步法再来找出新的走法,走不下去时就再返回一步。 4 树状结构 二叉树排序和搜索 在这一棵二叉树中,左枝所保存的数值,永远都小于跟它对称的右枝所保存的数值。以这个方法所创建的二叉树,可以很容易地来做排序和搜索。 从最上端开始来对比,如果要寻找的数据大于目前的树枝中所保存的数值,那么数据一定是在右枝。如果是小于的话,那就是在左枝。以这个方法可以很快速地由上而F寻找数据。 二叉树创建后,数据也等于完成“排序”工作。经过特定的规则来取出二叉树数据,就可以达到排序的效果。以这个例于来看,只要先取出较小、而且较左边枝干中所保存的数值,就可以把数据由小到大来排序。 课堂测试和作业 利用散列搜索方法实现,在N个复数中搜索某个复数。 数据结构和算法 1 排序算法 排序的目的就是为了将数据以某种特定的形式排列起来,以方便某种应用。排序的算法较多,这里只介绍几种较为常见且有效的算法。 1.1 冒泡法 冒泡法是最简单的一种排序方法。尽管该方法的思想较为简单,但实际的排序效率较低。如果有N个数据需要进行排序,则需要对数据作N-1次扫描工作。 冒泡法的基本步骤如下: 从第一个数字开始,依次比较相邻两个数据的大小。如果第一个数比第二个数大,则交换两者的位置; 重复上述工作,直到倒数第二个数据; 从第一步开始,重新进行新的扫描。 在上面的算法中,由于每次扫描都将剩余数据中的最大值放到了最后边,因此每次扫描的数据会越来越少,最后形成的新数据排列是按从小到大的方式进行的。这就好像水里的气泡,越轻的越在上面。当然,上面的排序结果也可以反过来,从大到小进行排列也是可以的。 1.2 选择排序法 选择排序法在某种形式上与冒泡法较为相似,冒泡法如果找到两个数中较大的一个就将其放到第二个数字的位置;而选择排序法则会将一组数据中的第一个数字与其后所有的数据进行比较,如果这个数字较小则将其放置于这组数据的第一个位置上。 对于一个有N个数字的一组数组,选择排序法的基本步骤如下: 找出N个数据中最大或最小的一个,并将其与这组数据中的第一个数字交换位置; 找出剩余N-1个数据中最大或最小的一个,并将其与这组数据中的第二个数字交换位置; 找出剩余N-2个数据中最大或最小的一个,并将其与这组数据中的第三个数字交换位置; ……; 找出最后两个数据中最大或最小的一个,并将其与这组数据中倒数第二个数字交换位置。 1.3 快速排序法 快速排序法名如其人,一般来说,快速排序法是目前最快的排序方法。对于一个有N个数据的序列而言,快速排序的基本步骤如下: 以序列中的第一个数字作为键值K,并令L=2、R=N; 以K为基准,将小于K的数字往前移,大于K的数字往后移。移动完成后,自然会发现K在原始序列中的大小排名,这时将K放置于正确的位置上; 如果K的大小排名为M,则移动后的序列会分成大于K和小于K的两组。此时,再将这两组数字按上述方法继续进行排序。 在快速排序法的第二步中,可以进一步详细的进行说明: 从序列中的第二个数字开始,依次拿下一个数字与键值K比较,直到找到大于等于K的数值L为止。此时,将L重新设置为数值L在序列中的位置; 从序列中的第R个数字开始,依次拿钱一个数字与键值K比较,直到找到小于等于K的数值M为止。此时,将N重新设置为数值M在序列中的位置; 如果L小于R,则把序列中L和R这两个位置的数据交换,再回到上一步继续执行;如果L大于R,则将序列中的第一个数字与第R个数字互相交换。 2 搜索算法 搜索是为了从一堆数据中找出符合要求的数据,计算机能够按照人们的要求不知疲倦的去搜索符合的数据。常见的搜索算法包括简单的顺序搜索、二分搜索及散列搜索。 2.1 顺序搜索 顺序搜索是最简单的一种搜索算法,简单来说,就是将数据依次拿出来查找看是否有符合要求的结果。例如对于一组数据(n1,n2,n3,…,nn),想要确定其中是否有数据m,则顺序搜索的做法如下: 先看第一个数据n1,如果n1=m

文档评论(0)

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

建筑工程师持证人

没啥好说的额

领域认证该用户于2024年10月16日上传了建筑工程师

1亿VIP精品文档

相关文档