北京邮电大学自动化学院:《数据结构》第八章 查找

第8章查找 1、查找表——也叫检索,是由同一类型的数据元素(或记 录)构成的集合。由于“集合”中的数据元素之间存在完全 松散的关系,因此查找表是一种非常灵便的数据结构。 2、查找表的操作 查找某个“特定”的数据元素是否在查找表中; ●检索某个“特定”的数据元素的各种属性; 在查找表中插入一个数据元素; 从査找表中删除某个数据元素。 北京邮电大学自动化学院
北京邮电大学自动化学院 1 第8章 查找 ⚫ 1、查找表——也叫检索,是由同一类型的数据元素(或记 录)构成的集合。由于“集合”中的数据元素之间存在完全 松散的关系,因此查找表是一种非常灵便的数据结构。 ⚫ 2、查找表的操作 ⚫ 查找某个“特定”的数据元素是否在查找表中; ⚫ 检索某个“特定”的数据元素的各种属性; ⚫ 在查找表中插入一个数据元素; ⚫ 从查找表中删除某个数据元素

第8章查找 ●3、静态査找表、动态査找表 ●若对查找表只作前两种统称为“査找”的操作,则此 类查找为静态查找表 若在查找过程中同时插入查找表中不存在的数据元素, 或从查找表中删除已存在的某个数据元素,则称此类表 为动态查找表。 4、关键字、次关键字 ●关键字:是数据元素(或记录)中某个数据项的值,用 它可以标识(识别)一个数据元素(或记录)。若此关 键字可以唯一地标识一个记录,则称此关键字为主关键 字。反之,则称此关键字为次关键字。 北京邮电大学自动化学院
北京邮电大学自动化学院 2 ⚫ 3、静态查找表、动态查找表 ⚫ 若对查找表只作前两种统称为“查找”的操作,则此 类查找为静态查找表。 ⚫ 若在查找过程中同时插入查找表中不存在的数据元素, 或从查找表中删除已存在的某个数据元素,则称此类表 为动态查找表。 ⚫ 4、关键字、次关键字 ⚫ 关键字:是数据元素(或记录)中某个数据项的值,用 它可以标识(识别)一个数据元素(或记录)。若此关 键字可以唯一地标识一个记录,则称此关键字为主关键 字。反之,则称此关键字为次关键字。 第8章 查找

第8章查找 5、查找 根据给定的某个值,在査找表中确定一个其关键字等于给定 值的记录或数据元素。若表中存在这样的一个记录,则称查 找是成功的,此时查找的结果为给出整个记录的信息,或指 示该记录在查找表中的位置; 若表中不存在关键字等于给定值的记录,则称查找不成功 此时查找的结果可给出一个“空”记录或“空”指针。 6、查找方法评价 查找速度、占用存储空间多少、算法本身复杂程度 平均查找长度ASL( Average Search Length):为确定记录 在表中的位置,需和给定值进行比较的关键字的个数的期望 值叫查找算法的平均查找长度。 北京邮电大学自动化学院
北京邮电大学自动化学院 3 ⚫ 5、查找 ⚫ 根据给定的某个值,在查找表中确定一个其关键字等于给定 值的记录或数据元素。若表中存在这样的一个记录,则称查 找是成功的,此时查找的结果为给出整个记录的信息,或指 示该记录在查找表中的位置; ⚫ 6、查找方法评价 ⚫ 查找速度、占用存储空间多少、算法本身复杂程度 ⚫ 平均查找长度ASL(Average Search Length):为确定记录 在表中的位置,需和给定值进行比较的关键字的个数的期望 值叫查找算法的平均查找长度。 ⚫ 若表中不存在关键字等于给定值的记录,则称查找不成功。 此时查找的结果可给出一个“空”记录或“空”指针。 第8章 查找

81静态查找表 ChT l.trt 、顺序表的查找(顺序查找) 、顺序査找从表中最后一个记录开始,逐个进行记录的关键 字和给定值的比较,若某个记录的关键字和给定值比较相等, 则查找成功,找到所查找记录;反之,若直至第一个记录,其 关键字和给定值比较都不等,则表明表中没有所查记录,查找 不成功。 找64比较次数5 例 0123456 7 64513192137566475808892 蓝监视哨 比较次数 ●查找第1个元素:n ●查找第n个元素: 查找第个元素:n+1 ●查找第n-1个元素:2·查找失败: n+1 北京邮电大学自动化学院 4
北京邮电大学自动化学院 4 i 例 0 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 找64 64 监视哨 i i i i 比较次数=5 ⚫ 比较次数: ⚫ 查找第n个元素:1 ⚫ 查找第n-1个元素:2 8.1 静态查找表 ⚫ 一、顺序表的查找(顺序查找) ⚫ 1、顺序查找 从表中最后一个记录开始,逐个进行记录的关键 字和给定值的比较,若某个记录的关键字和给定值比较相等, 则查找成功,找到所查找记录;反之,若直至第一个记录,其 关键字和给定值比较都不等,则表明表中没有所查记录,查找 不成功。 ⚫ 查找第1个元素:n ⚫ 查找第i个元素:n+1-i ⚫ 查找失败: n+1

2、查找操作的性能分析 ●对于含有n个记录的表,查找成功时的平均查找长度为: ASL=>P 其中:n为表长,P为查找表中第i个记录的概率, 且∑P=1,C为找到该记录时,曾和给定值比较过的关 键字的个数。 从顺序查找的过程可见,c取决于所查找记录在表中的位 置。查找表中最后一个记录是,仅需比较一次,而查找表中 第一个记录时,则需比较n次。一般情况下c等于n-i+1。 北京邮电大学自动化学院
北京邮电大学自动化学院 5 2、查找操作的性能分析 ⚫ 对于含有n个记录的表,查找成功时的平均查找长度为: ⚫ 其中: n 为表长,Pi 为查找表中第i个记录的概率, 且 , Ci为找到该记录时,曾和给定值比较过的关 键字的个数。 1 1 = = n i Pi = = n i ASL pi ci 1 ⚫ 从顺序查找的过程可见, Ci取决于所查找记录在表中的位 置。查找表中最后一个记录是,仅需比较一次,而查找表中 第一个记录时,则需比较n次。一般情况下Ci等于n-i+1

ASLnP, +(n-1)P2++2Pn-+P 设表中每个元素的查找概率相等Pn 则A=∑n=1=1.m+=+1 从上式可知,在不等概率査找的情况下, ASLSS在 Pn≥Pn位…≥P2≥P1时取极小值。 应对记录的查找概率进行排序,使表中记录按查找概率由 小到大重新排列,以便提高查找效率。 查找概率无法事先测定,则查找过程采取的改进办法是 在每次查找之后,将刚刚查找到的记录直接移至表尾的位 置上。 北京邮电大学自动化学院
北京邮电大学自动化学院 6 ASL = nP1 +(n-1)P2 + +2Pn-1+Pn 2 1 2 1 1 ( 1) 1 1 1 + = + = = = = = = n n n n i n ASL p c n p n i n i i i i 则 设表中每个元素的查找概率相等 ⚫ 从上式可知,在不等概率查找的情况下,ASLss 在 Pn≥Pn-1≥···≥P2≥P1时取极小值。 ⚫ 应对记录的查找概率进行排序,使表中记录按查找概率由 小到大重新排列,以便提高查找效率。 ⚫ 查找概率无法事先测定,则查找过程采取的改进办法是, 在每次查找之后,将刚刚查找到的记录直接移至表尾的位 置上

、顺序表的查找(顺序查找) 顺序查找的缺点是平均查找长度较大,特别是当n很大 时,查找效率低。然而,它有很大的优点是:算法简单且 适应面广。 当査找不成功时的情形不忽视时,査找算法的平均查找长 度应是查找成功时的平均查找长度与查找不成功时的平均 查找长度之和。 对于顺序查找,不论给定值key为何值,查找不成功时和 给定值进行比较的关键字个数均为n+1。假设查找成功与 不成功的可能性相同,对每个记录的查找概率也相等, 则P ,此时顺序查找的平均查找长度为 2n AS ∑(m-i+1)+(n+1)=7(m+1) 4 北京邮电大学自动化学院
北京邮电大学自动化学院 7 ⚫ 顺序查找的缺点是平均查找长度较大,特别是当n很大 时,查找效率低。然而,它有很大的优点是:算法简单且 适应面广。 n Pi 2 1 = ( 1) 4 3 ( 1) 2 1 ( 1) 2 1 1 ' = − + + + = + = n i n n n ASL n i S S ⚫ 当查找不成功时的情形不忽视时,查找算法的平均查找长 度应是查找成功时的平均查找长度与查找不成功时的平均 查找长度之和。 ⚫ 对于顺序查找,不论给定值key为何值,查找不成功时和 给定值进行比较的关键字个数均为n+1。假设查找成功与 不成功的可能性相同,对每个记录的查找概率也相等, 则 ,此时顺序查找的平均查找长度为: 一、顺序表的查找(顺序查找)

有序表的查找(折半查找) 、折半查我折半查找的查找过程是:先确定待查记录 所在的范围(区间),然后逐步缩小范围直到找到或找不到 该记录为止。每次将待查记录所在区间缩小一半。 ●算法实现:假设表长为n,loW、high和mid分别指向待查 元素所在区间的上界、下界和中点k为给定值,初始时,令 low=1, high=n, mid=L(low+high)/2] 让k与mid指向的记录比较 若k=rmid]key,查找成功 ·若krmid]key,则 lowEmid+1 重复上述操作,直至 owPhigh时,查找失败 北京邮电大学自动化学院
北京邮电大学自动化学院 8 ⚫ 1、折半查找 折半查找的查找过程是:先确定待查记录 所在的范围(区间),然后逐步缩小范围直到找到或找不到 该记录为止。每次将待查记录所在区间缩小一半。 二、有序表的查找(折半查找) ⚫ 算法实现:假设表长为n,low、high和mid分别指向待查 元素所在区间的上界、下界和中点,k为给定值,初始时,令 low=1,high=n,mid=(low+high)/2 ⚫ 让k与mid指向的记录比较 ⚫ 若k==r[mid].key,查找成功 ⚫ 若kr[mid].key,则low=mid+1 ⚫ 重复上述操作,直至low>high时,查找失败

1、折半查找 例如:已知如下11个数据元素的有序表(05,13,19, 21,37,56,64,75,80,88,92),现要查找关键 字为21和70的数据元素。 找21 1234567891011 例 51319213756647580889 low mI high 1234 67891011 513192137566475808892 d high 345678 0 1011 513192137566475808892 Ch7 2.c lowmid high Ch 2 txt 北京邮电大学自动化学院
北京邮电大学自动化学院 9 low mid high 例 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 找21 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 low mid high 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 Ch7_2.c lowmid high 例如:已知如下11个数据元素的有序表(05,13,19, 21,37,56,64,75,80,88,92),现要查找关键 字为21和70 的数据元素。 1、折半查找

34567891011 例 找70 513192137566475808892 low mid high 12345678910 513192137566475808892 low mid 13191213756 7891011 6475808892 low mid high 1234 67891011 513192137566475808892 low high mid 2345678910 513192137566475808892 北京邮电大学白他胜dow 10
北京邮电大学自动化学院 10 例 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 low mid high 找70 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 low mid high 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 low high mid 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 low mid high 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 high low
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京邮电大学自动化学院:《数据结构》第五章 数组和广义表.ppt
- 北京邮电大学自动化学院:《数据结构》第二章 线性表.ppt
- 北京邮电大学自动化学院:《数据结构》第九章 排序.ppt
- 北京邮电大学自动化学院:《数据结构》第三章 栈和队列.ppt
- 北京邮电大学自动化学院:《数据结构》第七章 图.ppt
- 北京邮电大学自动化学院:《数据结构》第一章(1-1)什么是数据结构.ppt
- 北京邮电大学自动化学院:《数据结构》第一章 绪论(杨福兴).ppt
- 《电子商务的技术基础》第四章(4-1) 国际互联网.ppt
- 《CAXA2000电子图板教程》ppt电子课件.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第四章 Java异常处理.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第六章 Java流(数据流的运用).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第八章 Java网络功能.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第五章 Java显示AWT(构成用户界面的窗口环境).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第二章 Java小程序小应用.ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第九章 分布式对象技术体系(2/2).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第九章 分布式对象技术体系(1/2).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第三章 Java事件(事件处理).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第七章 Java线程(多线程).ppt
- 北京大学计算机系:《Java》课程讲义(PPT课件)第一章 Java的类.ppt
- 《面向对象语言》课程教学资源(PPT课件讲稿)第6章 类与对象.ppt
- 北京邮电大学自动化学院:《数据结构》第六章 树与二叉树.ppt
- 北京邮电大学自动化学院:《数据结构》第四章 串.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第5 讲文本与字体.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第2讲 Windows应用程序基础.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第3讲 Windowswindows的图形设备接口及绘图.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第1讲 VC++集成开发环境.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第5讲 Windows应用程序中的键盘与鼠标.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第7章 资源Windows源在编程中.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第8章 MFC基础知识.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第9章 Windows标准控件在可视化编程中的应用.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第10章 在MFC中创建应用程序的资源.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第11章 单文档与多文档.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第12章 多媒体应用程序的设计.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第13章 数据库应用程序的开发.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第14章 开发 Internet应用程序.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第5讲 文本与字体.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第2讲 Windows应用程序基础.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第3讲 Windowswindows的图形设备接口及绘图.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第1讲 VC++集成开发环境.ppt
- 清华大学:《VC++面向对象与可视化程序设计》课程教学资源(PPT课件讲稿)第5讲 Windows应用程序中的键盘与鼠标.ppt