版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
折半查找的算法思想
折半查找,又称“二分查找”,仅适用于有序的顺序表。
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国水罐消防车行业供需形势分析及未来投资价值评估报告
- 2024-2030年中国水源高温热泵行业营销渠道分析与投资潜力盈利性研究报告
- 2024-2030年中国水杨醛行业运行状况及需求潜力预测报告
- 2024-2030年中国水处理剂行业前景动态与发展趋势预测报告
- 2024-2030年中国氮化硼行业市场深度调研及发展趋势与投资前景预测研究报告
- 2024-2030年中国氦气分离膜市场运行现状与投资前景评估报告
- 2024-2030年中国氢气发生器行业市场发展趋势与前景展望战略分析报告
- 2024-2030年中国气体泄漏检测仪行业市场发展趋势分析及投资机会风险研究报告
- 2024-2030年中国毛巾行业市场深度分析及发展预测与投资策略研究报告
- 2024-2030年中国正磷酸铁行业市场现状分析及竞争格局与投资发展研究报告
- 消防员训练安全隐患分析
- 重症护理超声理论测试题(含答案)
- 提高员工的工作动力和意愿
- 法人退出公司协议书
- 餐厅经理考试结构化面试试题及答案
- 投壶游戏方案
- 耐克的行业分析
- 道路智能交通系统及违停自动抓拍系统施工安装方案
- 成语故事铁杵磨成针
- 班主任技能大赛笔试试卷及参考答案
- 饭店业协会方案
评论
0/150
提交评论