【C语言版】9第九章查找课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【C语言版】9第九章查找课件

数据结构 第九章 查找 计算机科学系 施化吉 E-mail: hjshi002@163.com; 所谓查找(Search)又称检索,就是在一个数据元素集合中寻找满足某种条件的数据元素。 查找在计算机数据处理中是经常使用的操作。查找算法的效率高低直接关系到应用系统的性能。 查找的方法很多,本章将介绍一些常用的查找算法,主要有:线性表的查找、树表的查找和散列表的查找。 并对有关的算法进行性能分析和对比。;9.1 基本概念 ;9..1 基本概念 ;3.查找 查找(Search)是数据处理中最常用的一种运算。最常见的一种方式是事先给定一个值,在数据表中找到其关键字等于给定值的数据元素。查找结果通常有两种可能:;3.查找:(续) 查找结果通常有两种: 一种可能是查找成功: 即找到关键字等于给定值的数据元素, 这时作为查找结果,可报告该数据元素在数据表中的位置, 还可进一步给出该数据元???的具体信息; 另一种可能是查找不成功(查找失败): 即数据表中找不到其关键字等于给定值的数据元素, 此时查找的结果可给出一个空记录或空指针。;4.静态查找表和动态查找表: 数据表的组织有两种不同方式: 其一,数据表的结构固定不变. 当查找失败时,作为查找结果只报告一些信息,如失败标志、失败位置等, 这类数据表称为静态查找表; 其二,数据表的结构在插入或删除数据元素过程中会得到调整. 当查找失败时,则把给定值的数据元素插入到数据表中, 这类组织方式的数据表称为动态查找表。;5.查找的效率: 查找是经常使用的一种运算,因此,查找的时间复杂度是人们关心的一个重要因素。 查找的时间复杂度一般用平均查找长度(ASL)来衡量。 平均查找长度是指在数据表中查找各数据元素所需进行的关键字比较次数的期望值,其数学定义为:;5.查找的效率:(续) 平均查找长度是指在数据表中查找各数据元素所需进行的关键字比较次数的期望值,其数学定义为:;9.2 线性表上的查找;在本章以后各节中,约定关键字和数据元素类型为: 典型的关键字类型可能有: typedef float KeyType;//实型 typedef int KeyType;//整型 typedef char* KeyType;//字符串型 数据元素类型定义为: typedef struct{ KeyType key;//关键字域 …… //其他域 }ElemType; 静态查找表的顺序存储结构为: typedef struct{ ElemType *elem; //元素从1号单元开始存储 int length; //表的长度 }SSTable;;在顺序存储结构下的顺序查找算法如下: Status Search (SSTable L,KeyType k) {//在顺序表中查找关键字为k的数据元素 int i = L.length; while ( L.elem[i].key != k ) i --; return i; };例 ;在顺序存储结构下的顺序查找算法如下: Status Search (SSTable L,KeyType k) { //在顺序表中查找关键字为k的数据元素 int i = L.length; L.elem[0].key = k; //在0号位置设置监视哨 while (L.elem[i].key != k ) i --; return i; };例 ;在等概率情形下查找成功的平均查找长度为:;9.2.2 有序表的折半查找 ;1)若L.elem[mid].key = x,则查找成功,报告成功信息并返回其下标mid; 2)若L.elem[mid].key x,则说明如果数据表中存在要找的数据元素,该数据元素一定在mid的右侧,可把查找区间缩小到数据表的后半部分(low=mid+1),再继续进行折半查找(转步骤1); 3)若L.elem[mid].key x,则说明如果数据表中存在要找的数据元素,该数据元素一定在mid的左侧。可把查找区间缩小到数据表的前半部分(high=mid-1),再继续进行折半查找(转步骤1)。 举例说明:;设有序表为{8,11,23,34,46,68,71,86}. 下图(a)给出了查找关键字为23的数据元素时的查找过程,找到所查数据元素一共做了3次关键字比较。 图(b)给出了查找关键字为52的数据元素时的查找过程,直到确认查找失败也执行了3次关键字比较。;Status BinarySearch (S

文档评论(0)

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

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

1亿VIP精品文档

相关文档