- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
课时5二分查找
课时目标
1.通过实例分析,理解顺序查找的基本思想,掌握使用二分查找的一般方法。
2.能根据不同的应用场景,选择合适的数据结构,能灵活使用二分查找算法编写程序。
1.二分查找(BinarySearch)
二分查找又称对分查找或折半查找。
二分查找是指在有序的数据序列中,首先将要查找的数据元素与数组的________________元素进行比较,如果相等,则查找成功并退出查找;否则,根据数组元素的有序性,确定新的____________(在数组的前半部分还是在后半部分);在确定了新的查找范围后,重复进行以上操作,直到找到或查找结束为止。
①二分查找的前提条件是待查找的数据序列必须有序。
②“未找到”是指当前查找区间不存在,即区间左端点大于右端点。
2.二分查找的算法框架
说明:要查找的目标数据元素为key,待查找的数据元素存放在数组d中。
i、j分别为查找区间的起点位置和终点位置,m为查找区间的中间位置,n为数据元素个数。
i=0
j=n-1
whilei=j:
#计算中点位置m
#比较key与d[m],并做相应处理
#若ij,则表示未找到
3.二分查找的程序实现
·设要查找的数据是key,待查找的数据元素存放在数组d中,并已按升序排序。
·输出查找结果,若找到则输出信息“找到!位置为:X”,否则输出“查无此数!”
·输出查找次数c。
二分查找主要代码如下(以升序为例):
输入key的值
c=0#记录查找次数
find=False#设置find的初值
i=0#区间左端点位置
j=n-1#区间右端点位置
while________________:#还未找完并且还未找到,则继续查找
c=c+1#查找次数记数
m=_________#计算中点位置m,等价于m=int((i+j)/2)
ifkey==d[m]:#找到目标元素,并进行相应处理
find=True
print(m)
ifkeyd[m]:#表示要查找的元素比中间位置上的元素大时
i=m+1#调整区间左端点
else:
j=m-1#调整区间右端点
iffind==False:
print(″查无此数!″)
print(″查找次数为:″,c)
例1有如下两组数据:
①1,2,3,4,5,6,7,8,9
②3,4,5,2,1,8,7,6,9
要在上面两组数据中查找某个特定值,下列说法不正确的是()
A.①②都可以直接使用二分查找
B.①②都可以直接使用顺序查找
C.①可以直接使用顺序查找,也可以直接使用二分查找
D.②可以直接使用顺序查找,但不能直接使用二分查找
听课笔记:
变式训练分别使用顺序查找算法和二分查找算法在数据序列“5,6,10,13,15,20,21,26,30”中查找数据10,下列关于查找的次数的说法中正确的是()
A.顺序查找2次,二分查找3次
B.顺序查找3次,二分查找2次
C.顺序查找3次,二分查找3次
D.顺序查找3次,二分查找4次
例2在列表lista中存储的数据依次为:88,78,70,65,60,55,51,45,39,28。现使用二分查找算法在列表lista中查找数据51,共需查找的次数为()
A.1次 B.2次 C.3次 D.4次
听课笔记:
变式训练有100个英语单词已按升序排序并存储在列表listb中,现要使用二分查找算法在列表listb中查找某个单词,则最多的查找次数为()
A.5次 B.6次 C.7次 D.8次
例3某二分查找算法的Python程序段如下:
n=0;flag=True
key=int(input(″输入要查找的数:″))
i,j=0,9
whilei=jandflag:
m=(i+j)∥2
ifa[m]==key:
flag=False
elifa[m]key:
i=m+1
n=n+1
else:
j=m-1
n-=1
若列表a中的元素依次是[5,11,18,23,27,33,34,41,45,69],程序运行后变量n的值是2,则输入的整数key值不可能是()
A.25 B.34 C.45
您可能关注的文档
- 高中信息技术浙教版(2019)选修1 第六章 课时2 POI数据的组织与应用 课件.pptx
- 高中信息技术浙教版(2019)选修1 第三章 课时1 字符串 课件.pptx
- 高中信息技术浙教版(2019)选修1 第三章 课时2 队列 课件.pptx
- 高中信息技术浙教版(2019)选修1 第三章 课时3 栈 课件.pptx
- 高中信息技术浙教版(2019)选修1 第四章 课时1 树与二叉树 课件.pptx
- 高中信息技术浙教版(2019)选修1 第四章 课时2 二叉树的基本操作 课件.pptx
- 高中信息技术浙教版(2019)选修1 第四章 课时3 抽象数据类型 课件.pptx
- 高中信息技术浙教版(2019)选修1 第四章 验收卷(三) 树 课件.pptx
- 高中信息技术浙教版(2019)选修1 第五章 课时1 数据结构与算法关系 课件.pptx
- 高中信息技术浙教版(2019)选修1 第五章 课时2 迭代与递归 课件.pptx
- 2025年分红险:低利率环境下产品体系重构.pdf
- 大学生职业规划大赛《应用物理学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《新媒体技术专业》生涯发展展示PPT.pptx
- 七年级上册英语同步备课(人教2024)Unit 3 课时2 Section A(2a-2f)(同步课件).pdf
- 七年级上册英语同步备课(人教2024)Unit 2 课时4 Section B(1a-1d)(同步课件).pdf
- 七年级上册英语同步备课(人教2024)Unit 3课时6 project(课件).pdf
- 2025年港口行业报告:从财务指标出发看港口分红提升潜力.pdf
- 2023年北京市海淀区初一(七年级)下学期期末考试数学试卷(含答案).pdf
- 2026年高考化学一轮复习第7周氯及其化合物、硫及其化合物.docx
- 2023年北京市西城区北京四中初一(七年级)下学期期中考试数学试卷(含答案).pdf
文档评论(0)