计算机软件计算基础 第六章 查找和排序.pptVIP

计算机软件计算基础 第六章 查找和排序.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机软件计算基础 第六章 查找和排序

信息技术学院 王静 6.1 查找 6.2排序 在数据处理领域中,最常见的运算是在给定的数据结构中查找所需要处理的数据元素。 另一常见的运算是对给定的数据结构进行重新分类,或按数据元素的大小重新进行排序,以方便对数据元素的处理。 查找与排序是数据处理的基本技术。本章主要介绍线性表查找与排序的基本方法,以及索引存储结构下的查找技术。 关键字 是数据元素中可以唯一标识一个数据元素的数据项,比 如学号、身份证号等 查找 是根据给定的关键值,在一组数据中确定一个其关键字 等于给定值的数据元素的过程 确切定义 给定一个值K,在n个记录中进行搜索,寻找一个其关键 字等于给定的K值的记录,如找到,则输出记录称查找 成功;否则输出查找不成功的信息称查找失败 查找的结果: 查找成功:找到满足条件的记录 查找失败:找不到满足条件的记录 1、动态查找和静态查找 查找的同时对表做修改(如插入或删除)的表称之为动态查找表,否则为静态查找表。 2、平均查找长度 衡量一个查找算法优劣的标准是在查找过程中对关键字需要执行的平均比较次数(即平均查找长度ASL)将查找算法进行的关键字的比较次数的数字期望值定义为平均查找长度,计算公式为: 二、线性表的查找 线性表上进行查找的方法主要有3种:顺序查找、二分查找和分块查找。 1、顺序查找 顺序查找的基本方法是,从线性表的第一个元素开始,依次将线性表中的元素与被查元素进行比较,若遇到线性表中某位置上的元素与被查元素相等,则表示找到(即查找成功);若线性表中所有的元素与被查元素进行比较都不相等,则表示线性表中不存在需要找的元素(即查找失败)。 顺序查找的算法: int sqsearch (sqlist R[], keytype k) { int i=n; R[0].key=k; //设置R[0]为监视哨 while(R[i].key!=k) i--; return i; //返回检索结果i } 在下面两种情况下只能采取顺序查找 a. 线性表为无序表(元素排列是无序的); b. 即使是有序线性表,但采用的是链式存储结构 2、二分查找(折半查找) ? 要求线性表结点按关键字码值排好,且以顺序方式存储 ? 前提:必须在具有顺序存储结构的有序表中进行 ? 方法:用要查找的码值X与中间位置结点的关键 码值W相比较: (1)X=W,此时已经查找成功,查找结束 (2)XW,表明X在表的后半部分,取后半部 分进行查找 (3)XW,表明X在表的前半部分,取前半部 分进行查找 二分法查找的算法 int binsearch (sqlist L, int key) { int low, high, mid; low=0; high=L.len-1; while (low=high) { mid=(low+high)/2; if (L.elem[mid]==aidkey) return mid; if (L.elem[mid]aidkey) high=mid-1; if (L.elem[mid]aidkey) low=mid+1; } return -1; } 二分法的优缺点 ? 二分法查找的优点是平均检索长度小,为 1og n 2。 ? 二分法查找的缺点是它要求记录必须按关 键字有序,并且只适用于顺序方式存储的 顺序表。 3、分块查找(又称索引顺序查找) 从整体来看,线性表不是有序表,如果将线性表分成若干个子表,虽然每一子表也不是有序的,但各个子表之间却是有序的,这样的线性表称为分块有序表。 分块有序表的结构可以分为两部分。 ① 线性表本身采用顺序存储结构。 ② 再建立一个索引表。 下图是将一个长度n = 19的线性表分成 m = 3个子表的分块有序表示意图。 分块查找又称索引顺序查找,用于在分块有序表中进行查找。 分块查找的过程可以分两步进行: (1)查找索引表,以便确定被查元素所在子表的位置。 (2)在相应的子表中用顺序查找法进行具体的查找。 4、树的查找 二叉排序树查找 从二叉排序树的根结点开始与被查值进行比较: ① 若被查值等于根结点值,则查找成功,查找过程结束。 ② 若被查值小于根结点值,则到左子树中去查找。 ③ 若被查值大于根结点值,则到右子树中去查找。 对于经常需要动态增长且经常需要查找的大线性表来说,采用二叉排序树这种结构是很方便的,它既有利于插入元素,也有利于查找。 四、哈希( Hash)技术 1、哈希检索与哈希表 哈希技术又称为散列技术,其基本思想是在记录的存储地址和它的关键字之间建立一个确定的对应关系;这样,不经过

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档