- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.3.6 查找 查找是指在一个给定的数据结构中查找某个指定的元素。通常,应根据不同的数据结构采用不同的查找方法。 7.3.6 查找 顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法如下: 用待查找的关键码值与线性表中各元素的关键码值逐个比较,若找出相等的则查找成功,否则查找失败。 顺序查找 顺序查找的优点:对线性表的元素逻辑次序无要求(即不必按关键码值排序),对线性表的存储结构无要求(即顺序存储,链式存储皆可)。 顺序查找的缺点:平均检索长度大,大约要与线性表中一半的元素进行比较。 对于线性表为无序表和有序线性表采用链式存储结构,则只能用顺序查找。 7.3.6 查找 二分查找是一种效率较高的线性表查找方法,它只适合用于顺序存储的有序表,即线性表中的元素必须按值排好顺序,且以顺序存储方式存储。 二分查找 二分查找的方法是:首先用要查找的关键码值与线性表中间位置的元素的关键码值比较,比较相等则查找结束,不等则根据比较的结果确定下一步是在线性表的前部,还是后部;按前述方法进行,如此进行下去,直到找到为止,否则在线性表中找不到该关键码值。 例题 【例7.5】设被检索的线性表关键码序列为061、087、154、170、275、426、503、509、512、612、677、703、765、897、908。现在要检索关键码为612的节点,用“[ ]”括住本次检索的子表,用“ ”指向该子表的中间节点,即本次参加比较的关键码。请画出检索过程,求出比较的次数。 二分查找 二分查找的优点是:平均检索长度小,为log2n。 二分查找的缺点是:排序线性表花费时间,顺序方式存储插入、删除不便。 7.3.7 排序 排序是指将一个无序序列整理成按值非递减顺序排列的有序表,排序可以在各种不同的存储结构上实现。 7.3.7 排序 交换类排序法是指借助数据元素之间的互相交换进行排序的一种方法。常用的有冒泡排序法和快速排序法。 交换排序法 冒泡排序的基本方法是:将待排序的元素顺序两两比较,若为逆序,则进行交换。将序列照此方法从头至尾处理一遍称作一趟冒泡,一趟冒泡的效果是将元素关键值最大的元素交换到最后的位置,即该元素的排序最终位置。若某一趟冒泡过程中没有任何交换发生,则排序过程结束。 冒泡排序法 对n个元素进行排序最多需要n?1趟冒泡。 例题 【例7.6】设待排序序列的关键码为:38、19、67、15、99、45、94、2、76。画出冒泡排序过程,并求出即本次参加比较的关键码。请画出检索过程,求出冒泡的趟数。 交换排序法 快速排序又称为分区交换排序,是对冒泡排序的一种改进。其基本方法是:在待排序序列中任取一个元素,以它为基准值,用交换的方法将所有元素分成两部分,比它小的在一个部分,比它大的在另一个部分,再分别对两个部分实施上述过程,一直重复到排序完成。 7.3.7 排序 常用的插入类排序法有:简单插入排序法和希尔排序法。 插入类排序法 简单插入排序法是最简单直观的排序方法,其基本方法是:每步将一个待排序元素按其关键码值的大小插入到前面已排序文件中的适当位置上,直到全部插入为止。 对n个元素进行简单插入排序,需要执行n(n?1)次比较。 例题 【例7.7】设待排序序列的关键码为:8、3、2、5、9、1、6,执行简单插入排序的过程 插入类排序法 希尔排序法的基本方法是:将整个无序序列分割成若干小的子序列分别进行插入排序。子序列的分割方法是:将相隔某个增量h元素构成一个子序列。在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序完成。 7.3.7 排序 常用的选择类排序法有:简单选择排序法和堆排序法。 选择类排序法 简单选择排序的基本方法是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置);然后对剩下的子表采用同样的方法,直到子表空为止。 对长度为n的序列,选择排序需要扫描n?1遍,最坏情况下需要比较n(n?1)/2次 。 例题 【例7.8】设待排序序列的关键码为:8、3、2、5、9、1、6,执行简单选择排序的过程如图7-19所示。 选择类排序法 堆排序法中,要求堆顶元素必为最大项,堆排序的基本方法是:在调整建堆过程中,总是将根节点值与左、右子树的根节点值进行比较,若不满足堆的条件,则将左、右子树根节点值中的大者与根节点进行交换,这个过程一直做到所有子树均为堆为止。 小 结 在现实生活中,经常要用到查找和排序技术,通常根据不同的数据结构采用不同的查找方法,在解决排序问题时,根据不同的情况可以采用合适高效的算法。 作 业 什么是顺序查找?什么是二分查找?它们各有哪些优缺点及适合哪些场合? 7.3.6 查找
文档评论(0)