武汉理工大学:《数据结构》 第七章 查找

第七章查找 由于查找运算的使用频率很高,几乎 在任何一个计算机系统软件和应用软件中 都会涉及到,所以当问题所涉及的数据量 相当大时,查找方法的效率就显得格外重 要。在一些实时查询系统中尤其如此。因 此,本章将系统地讨论各种查找方法,并 通过对它们的效率分析来比较各种查找方 法的优劣。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 第七章 查找 由于查找运算的使用频率很高,几乎 在任何一个计算机系统软件和应用软件中 都会涉及到,所以当问题所涉及的数据量 相当大时,查找方法的效率就显得格外重 要。在一些实时查询系统中尤其如此。因 此,本章将系统地讨论各种查找方法,并 通过对它们的效率分析来比较各种查找方 法的优劣

71查找的基本概念 搜索关键 1、查找表和查找结果 一般,假定被查找的对象是由一组结点组成 的表( Table)或文件,而每个结点则由若干个 数据项组成。并假设每个结点都有一个能惟 标识该结点的关键字 查找( Searching)的定义是:给定一个值K, 在含有n个结点的表中找出关键字等于给定 值K的结点。若找到,则查找成功返回该结 点的信息或该结点在表中的位置;否则查找失 败,返回相关的指示信息。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 7.1 查找的基本概念 1、查找表和查找结果 一般,假定被查找的对象是由一组结点组成 的表( Table)或文件,而每个结点则由若干个 数据项组成。并假设每个结点都有一个能惟一 标识该结点的关键字。 查找(Searching)的定义是:给定一个值K, 在含有n个结点的表中找出关键字等于给定 值,K的结点。若找到,则查找成功,返回该结 点的信息或该结点在表中的位置;否则查找失 败,返回相关的指示信息。 搜索关键 字

2、查找方法分类 (1)动态查找和静态查找 若在查找的同时对相应的数据结构做修改操 作如插入和删除),则称之为动态查找。否则称 之为静态查找 (2)内查找和外查找 查找还有内查找和外查找之分的分类方法。若 整个查找过程都在内存中进行,则称之为内查找 反之,着查找过程中需要访问外存,则称之为外 2查找 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 (1)动态查找和静态查找 若在查找的同时对相应的数据结构做修改操 作(如插入和删除), 则称之为动态查找。否则称 之为静态查找 。 2、查找方法分类 (2)内查找和外查找 查找还有内查找和外查找之分的分类方法。若 整个查找过程都在内存中进行,则称之为内查找; 反之,若查找过程中需要访问外存,则称之为外 查找

3、平均查找长度ASL 查找运算的主要操作是关键字的比较,所以 通常把查找过程中对关键字需要执行的平均 比较次数(也称为平均查找长度作为衡量一个 查找算法效率优劣的标准 平均查找长度 ASL(Average Search Length定义 为 其中:ASL=∑PC;(1<==n) ①n是结点的个数; ②P是查找第个结点的概率。若不特别声明,认为每 个结点的查找概率相等,即pp2=P=1/m; ③c是找到第个结点所需进行的比较次数 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 3、平均查找长度ASL 查找运算的主要操作是关键字的比较,所以 通常把查找过程中对关键字需要执行的 平均 比较次数(也称为平均查找长度)作为衡量一个 查找算法效率优劣的标准。 平均查找长度 ASL(Average Search Length)定义 为: ASL=∑Pi*Ci 其中: (1<=i<=n) ①n是结点的个数; ②Pi是查找第i个结点的概率。若不特别声明,认 为每 个结点的查找概率相等,即pl=p2…=pn=1/n; ③ci是找到第i个结点所需进行的比较次数

7.2静态查找 (一)顺序查找( Sequential Search) 在表的组织方式中,线性表是最简单的一种。 顺序查找是一种最简单的查找方法。 1、顺序查找的基本思想 基本思想是:从表的一端开始,顺序扫描线性 表,依次将扫描到的结点关键宇和给定值K相比 较。若当前扫描到的结点关键字与K相等,则查 找成功若扫描结束后仍未找到关键字等于K的 结点,则查找失败 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 7.2 静态查找 在表的组织方式中,线性表是最简单的一种。 顺序查找是一种最简单的查找方法。 基本思想是:从表的一端开始, 顺序扫描线性 表,依次将扫描到的结点关键宇和给定值K相比 较。若当前扫描到的结点关键字与K相等,则查 找成功;若扫描结束后,仍未找到关键字等于K的 结点,则查找失败。 (一)顺序查找(Sequential Search) 1、顺序查找的基本思想

2、顺序查找的存储结构要求 顺序查找方法既适用于线性表的顺序存储结构 也适用于线性表的链式存储结构(使用单链表 作存储结构时,扫描必须从第一个结点开始)。 3、基于顺序结构的顺序查找算法 (1)类型说明 typedef struct( Key ly pe key Info Type otherinfo; ∥此类型依赖于应用 )Node Type typedef Node Type Seqlist[nt+1];/0号单元用作哨兵 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 2、顺序查找的存储结构要求 顺序查找方法既适用于线性表的顺序存储结构 也适用于线性表的链式存储结构(使用单链表 作存储结构时,扫描必须从第一个结点开始)。 (1)类型说明 typedef struct{ KeyType key; InfoType otherinfo; //此类型依赖于应用 }NodeType; typedef NodeType SeqList[n+1]; //0号单元用作哨兵 3、基于顺序结构的顺序查找算法

(2)具体算法 int SeqSearch(seqlist r, KeyType k) {在顺序表Rn中顺序查找关键字为K的结点 ∥)功时返回找到的结点位置,失败时返回0 int R|0]key=k;/设置哨兵 for(i=n;R[,key!=k;i-);∥从表后往前找 return i;/若i为0,表示查找失败否则R是要找的结点 )//SeqSearch 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 (2)具体算法 int SeqSearch(Seqlist R,KeyType K) { //在顺序表R[1..n]中顺序查找关键字为K的结点, //成功时返回找到的结点位置,失败时返回0 int i; R[0].key=K; //设置哨兵 for(i=n;R[i].key!=K;i--); //从表后往前找 return i; //若i为0,表示查找失败,否则R[i]是要找的结点 } //SeqSearch

(3)算法分析 ①算法中监视哨R0的作用 为了在for循环中省去判定防止下标越界的条件论1,从 而节省比较的时间。 ②成功时的顺序查找的平均查找长度: 在等概率情况下,pi=1/m(1≤还n),故成功的平均查找 长度为:(n+,+2+1)/m=(n+1)2即查找成功时的平均比 较次数约为表长的一半。若k值不在表中,则须进行n+1 次比较之后才能确定查找失败。 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 (3)算法分析 为了在for循环中省去判定防止下标越界的条件i≥1,从 而节省比较的时间。 ②成功时的顺序查找的平均查找长度: 在等概率情况下,pi=1/n(1≤i≤n),故成功的平均查找 长度为: (n+…+2+1)/n=(n+1)/2即查找成功时的平均比 较次数约为表长的一半。若k 值不在表中,则须进行n+1 次比较之后才能确定查找失败。 ① 算法中监视哨R[0]的作用

③链表结构的顺序查找算法 设被查数据是一个单链表,其数据类型描述为: Struct Node I elemtype data; struct LNode x next: struct Inode *p*head elemtype data V; /要查找的数据用V表示* 则查找的第一个元素从头开始,最后一个元素 应为指针场为空的结点(结束条件) 算法描述如下: ■〓武六学竿苧院倍心工 系
武汉理工大学华夏学院-信息工程 系 ③ 链表结构的顺序查找算法 设被查数据是一个单链表,其数据类型描述为: Struct LNode { elemtype data; struct LNode * next; } struct lnode *P,*head; elemtype data V; /* 要查找的数据用V表示*/ 则查找的第一个元素从头开始,最后一个元素 应为指针场为空的结点(结束条件). 算法描述如下:

输入待查值Ⅴ P=*head P=空 显示查找不成功 P>da=y显示查找结果 p=P->next 结束 武汉理工大学华夏学院-信息工程 系
武汉理工大学华夏学院-信息工程 系 P=*head 否 否 p=P->next 显示查找不成功 显示查找结果 结束 输入待查值V P=空 P->data=V
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 武汉理工大学:《数据结构》 第一章 绪论.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第九章 多模态人机交互技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第八章 多媒体信息管理技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第七章 多媒体通信网络技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第六章 多媒体编程技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第五章 多媒体软平台.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第十一章 多媒体应用.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第十章 分布式多媒体处理技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)复习题.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第四章 多媒体硬基础.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第三章 多媒体数据压缩技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)霍夫曼编码、预测编码、统计编码、变换编码.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第一章 绪论、第二章 媒体与媒体技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第一章 绪论、第二章 媒体与媒体技术、第三章 多媒体数据压缩技术.ppt
- 《多媒体技术基础》课程教学资源(PPT课件讲稿)第一章 绪论、第二章 媒体与媒体技术.ppt
- 清华大学:《C语言程序设计》课程电子教案(PPT教学课件,第二版)第1-第7章.ppt
- 《autocad2007快速入门》学习资料(共十一章).pdf
- 软件工程师培训系列教材:《Java语言基础》电子课件.ppt
- 北京科技大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第九章 结构体与共用体.ppt
- 北京科技大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第八章 指针.ppt
- 武汉理工大学:《数据结构》 第三章 栈与队列.ppt
- 武汉理工大学:《数据结构》 第二章 线性表.ppt
- 武汉理工大学:《数据结构》 第五章 树形结构.ppt
- 武汉理工大学:《数据结构》 第八章 排序.ppt
- 武汉理工大学:《数据结构》 第六章 图.ppt
- 武汉理工大学:《数据结构》 第四章 串、数组与广义表.ppt
- 《ASP程序设计》 源代码.doc
- 《ASP程序设计》 第一章 ASP基础.ppt
- 《ASP程序设计》 第二章 HTML基础.ppt
- 《ASP程序设计》 第三章 VBScript脚本语言.ppt
- 《ASP程序设计》 第四章 Request和Response对象.ppt
- 《ASP程序设计》 第五章 Session、Application和Server对象.ppt
- 《ASP程序设计》 第六章 ASP组件.ppt
- 《ASP程序设计》 第七章 关系数据库基础.ppt
- 《ASP程序设计》 第八章 ADO对象.ppt
- 《ASP程序设计》 第就章 设计实例.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论 1.1 数据库系统概述 1.2 数据模型.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论 1.2.3 最常用的数据模型 1.2.4 层次模型 1.2.5 网状模型 1.2.6 关系模型.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二章 关系数据库 2.1 关系模型概述 2.2 关系数据结构 2.3 关系的完整性.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二章 关系数据库 2.4 关系代数 2.5 关系演算 2.6 小结.ppt