版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:10131619I293233I374143
low=0►lowmidv=(low+high)/2high=TableLen-1
33>mid,只可能
在右边区域
第1页共22页
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:]
710131619I2932
01234567
lowmidhigh
33<mid,只可能
在左边区域
第2页共22页
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:]
第3页共22页
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:]
012345678910111213
higth
lotw
33==mid
I查找成功
mid
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:
1◄0
-
igh
12<mid,只可能
在左边区域
第4页共22页
第5页共22页
第6页共22页
第7页共22页
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
TableLen=11
查找目标:12
012345678910111213
low>high
查找失败
折半查找的实现
〃折半查找
typedefstruct{//查找表的数据结构(顺序表)intBinary_Search(SSTableL,ElemTypekey){
ElemType*elem;//动态数组基址intlow=0,high=L.TableLen-1,mid;
intTableLen;//表的长度while(low<=high){
}SSTable;mid=(low+high)/2;〃取中间位置
if(L.elem[mid]==key)
mid;//查找成功则返回所在位置
折半查找,又称“二分查找”,return
elseif(L.elem[mid]>key)
仅适用于有序的顺序表。high=mid-l;〃从前半部分继续查找
▲else
low=mid+l;//从后半部分继续查找
顺序表拥有随机访问}
的特性,链表没有return-1;//查找失败,返回一1
}
TableLen=11
查找目标:331013I161929I323337I4143
01234
lowmidhigh
第8页共22页
。•查找•效率•分析。
❷0❾123❾456❺7❾89❷10
。。查找效■率分析。©
❷0❾123❾456❾7❸8❾910
t
mid
第9页共22页
查找效率分析
0000000000
01234678910
查找效率分析
mid
第10页共22页
第11页共22页
查找效率分析
ASL成功=(17+2*2+3*4+4*4)/11=3
ASL失败=(3*4+4*8)/12=11/3
第12页共22页
折半查找判定树的构造
012345678910
lowhigh
折半查找判定树的构造
—0123456❾7❸8❾9。©10
ttt
lowmidhigh
mid=[(low4-high)/2\
如果当前low和high之间有奇数个元素,则mid分隔后,左右两部分元素个数相等
第13页共22页
折半查找判定树的构造
。mid❾•❾•❷
❷0❾1❽23❾4678910
如果当前low和high之间有奇数个元素,则mid分隔后,左右两部分元素个数相等
折半查找判定树的构造
0123456789
tI
lowhigh
第14页共22页
。折半查找判定树的构造。
❷0❾12❷34❾56❸7❾89
lowmidhigh
mid=[(low4-high)/2\
如果当前low和high之间有偶数个元素,则mid分隔后,左半部分比右半部分少一个元素
折半查找判定树的构造
oeee
012356789
如果当前low和high之间有偶数个元素,则mid分隔后,左半部分比右半部分少一个元素
第15页共22页
折半查找判定树的构造
012356789
tttttt
lowmidhighlowmidhigh
mid=[(low+high)/2\
如果当前low和high之间有奇数个元素,则mid分隔后,左右两部分元素个数相等
如果当前low和high之间有偶数个元素,则mid分隔后,左半部分比右半部分少一个元素
第16页共22页
第17页共22页
折半查找判定树的构造
如果当前low和high之间有奇数个元素,则mid分隔后,左右两部分元素个数相等
如果当前low和high之间有偶数个元素,则mid分隔后,左半部分比右半部分少一个元素
折半查找的判定树中,若mid=[Qow+high)/2」,则对于任何一个结点,必有:
右子树结点数-左子树结点数=0或1
第18页共22页
折半查找判定树的构造
折半查找判定树的构造
判定树结点关键字:左〈中〈右,满足二叉排序树的定义
失败结点:n+1个(等于成功结点的空链域数量)
第19页共22页
折半查找判定树的构造
折半查找的查找效率
树高/?=[log^n+1)]查找成功的ASL<h折半查找的时间复杂度=O(log2n)
注:该树高不包
查找失败的ASL<h
含失败结点
第20页共22页
知识回顾与重要考点
适用范围0只适用于有序的顺序表
在[low,high]之间找目标关键字,每」检查mid=(low+high)/2
算法思想3/根据mid所指元素与目标关键字的大小调整low或high,不断缩小low和high的范围
1若low>high则查找失败
由mid所指元素将原有元素分割到左右子树中
构造O/
■■
折半查找O
判定树d1折半查找的判定树是平衡的二叉排序树(左〈中〈右)
折半查找判定树,只有最下面一层是不满的
〈特性C
若查找表有n个关键字,则失败结点有n+1个
树高〃=170g2(〃+01
\(不包含失败结点)
时间复杂度
拓展思考
折半查找时间复杂度=。(/“©〃)
顺序查找的时间复杂度=。(〃)
辣么,折半查找的速度一定比顺序查找更快?
TableLen=11
查找目标:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广播稿400字左右(35篇)
- 高中技术《技术与设计2》模块测试题 一
- 课外书的心得体会范文
- 幼儿园主题方案简单
- 风险合规部工作总结
- 销售培训心得(35篇)
- 居间代理房屋合同(3篇)
- 《技术的未来》教学设计(两篇)
- 苏教版 高中技术《技术与设计1》教案合集
- 26.1 锐角三角函数 同步练习
- 植物盆栽课件教学课件
- 2024年中小学天文知识竞赛初赛试卷
- 2024年10月时政100题(附答案)
- 2024年危险化学品经营单位安全管理人员证考试题库
- JJF(苏) 275-2024 测斜仪校验台校准规范
- 【9道期中】安徽省黄山地区2023-2024学年九年级上学期期中考试道德与法治试题(含详解)
- 2024年时事政治试题【带答案】
- 2024年医疗污水处理管理制度范本(二篇)
- 2024年官方兽医考试题库(单选题)
- 意识形态分析研判制度
- 中华民族发展史智慧树知到期末考试答案章节答案2024年云南大学
评论
0/150
提交评论