- 1
- 0
- 约1.15万字
- 约 66页
- 2019-03-09 发布于福建
- 举报
第十章 慢 查找
第十章 查找 ● 查找表:是由同一类型的数据元素构成的集合。 ● 关键字:是数据元素中某个关键字域的值,可 以标识一个数据元素。 ● 主关键字:可以唯一标识一个数据元素的关键 字叫主关键字。 10.1 线性表查找 10.1.1 顺序查找 ● 顺序查找算法SS 算法SS(R,n,K.i) /* 给定记录R1,R2,…,Rn的表,其中Ri 的关键词为Ki(1≤i≤n),本算法查找关键词等于K的记录*/ SS1 [初始化] i←1 .Kn+1←K . SS2 [比较关键词] WHILE K≠Ki DO i←i+1. ▌ 算法SS(R,n,K.i) SS1 [初始化] i←1 .Kn+1←K . SS2 [比较关键词] WHILE K≠Ki DO i←i+1. ▌ ● 查找成功的平均查找长度: E(n) ●查找失败的查找长度:n+1 ● 顺序查找的时间复杂度:O(n) 把经常出现的元素(它的发生概率较大)自动向表的前端移动,把不经常出现的元素自动向表的后端移动,并称以该方式组织的表为自组织表 . MOVE-AHEAD-ONE MOVE-TO-FRONT ● 顺序查找优缺点: 优点:算法简单,且适用面广,对表的结构无任何要求. 缺点:平均查找长度较大,特别n很大时查找效率低。 10.1.2 有序表的查找算法SO(R,n,K.i) /*表R1,R2,…,Rn按照关键字递增有序*/ SO1 [初始化] i←1 .Kn+1←+∞ . SO2 [顺序与表中各元素比较] WHILE K>Ki DO i←i+1. SO3 [若未找到,设i←n+1 ] IF K≠Ki THEN i←n+1. ▌ 有序表查找演示 算法SO的三种改进方法: 1. 对半(折半,二分)查找 2. 斐波那契查找 3. 插值查找 用线性插值决定K的期望地址 1. 对半(折半,二分)查找 [例] 假定有序表A中10个元素的关键字序列为: 12,23,26,37,54,60,68,75,82,96 当给定值分别为96和58时进行二分查找。 查找k=96时二分查找过程(4次比较成功) 算法B(R,n,K. found) /*对半查找算法,表中元素R1,R2,…,Rn相应的关键词满足K1≤K2≤…≤Kn*/ B1 [初始化] s←1 .e←n .found←false . B2 [查找] WHILE s≤e DO (i←?(s+e)/2? . // 找中间元素 IF K<Ki THEN e←i-1 . IF K=Ki THEN (found←true.RETURN). IF K>Ki THEN s←i+1 )▌ 查找k=58时二分查找过程(3次比较失败) [例] T(1,10)的二叉判定树 ● 二叉判定树 二叉判定树,T(s,e)的递归定义如下: (1) 当e-s+1?0时,T(s,e)为空树; (2) 当e-s+10时,二叉判定树的根结点是有序 表中序号为?(e+s)/2?的记录,根结点的左子树是与有序表Rs,Rs+1,…,R?(e+s)/2? -1相 对应的二叉判定树,根结点的右子树是与有序表R?(e+s)/2?+1,R?(e+s)/2?+2,…,Re相对应的二叉判定树。 ● 外部结点:树中所有结点的空指针都指向一个 方形结点,则称这些方形结点为查 找树的外部结点。 ● 内部结点:树中原来那些圆形结点就叫做查找 树的内部结点。 ● 增长的二叉树:当原二叉树中的结点没有左子树形和右子树形时,就增加特殊的结点(称外部结点,树中原来的那些结点称内结点),由此生成的二叉树称为增长的二叉树。 构造二叉判定树 搜索K=96成功的情况: 搜索K=58失败的情况: [例]T(1,10)查找成功的平均查找长度. 查找失败的平均查找长度: ● 完全平衡二叉树: 一棵增长树,如果存在k,并使所有的外结点
您可能关注的文档
- 第七章 理想不可压缩流体字的有旋流动和无旋流动 §7-1 流体流动的连续性方程.ppt
- 第七章机械加工工艺规程_何军宁_机械制造技术基础.ppt
- 第七章名电力安全技术防止电击事故措施.ppt
- 第七章水师电站的压力水管 第一节 压力水管的功用与结构形式.ppt
- 第三部分 不完全信息静态博弈 第四章 bayes博弈与baye西s均衡.ppt
- 第七章音 长期营业用资产.ppt
- 第三阶段:抗日战争、国共第二次合作 ( 1937年~1945年) 【解读考点流、构架通史框架】:.ppt
- 第三节 非齐次线性方程组 非左齐次线性方程组的概念.ppt
- 第七章路基路面思排水设计 .ppt
- 第七章_混八凝土简支梁桥的计算.ppt
原创力文档

文档评论(0)