- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
专题12查找算法
学习目标
1.掌握对分查找核心算法思想,在一个[i,j]区间中,不断查找中间位置m,并不断更新查找区间(更新并画出左右端点),直到找到或区间不存在;
2.掌握利用退出语句、标志变量和循环条件不成立的结束循环两种方式;
3.掌握查找区间不存在时,根据查找键值来判断变量i、j、m的关系.
在一个区间为[i,j]的有序数据序列a中查找一个数据key,先确定区间的中间位置m,让key与a[m]比较,若两者相等,表示找到数据,结束查找;若中间位置的数a[m]不是要查找的数,把区间分为[i,m-1]和[m+1,j]两部分。若查找的数据在右半段,修改左边界i的值为m+1,继续往右查找;若查找的数据在左半段,修改右边界j的值为m-1,继续往左查找;修改边界后,若i大于j,则查找的区间为空,等式i=j+1肯定成立,则该数在序列中不存在。
(2024年1月浙江省选考)某算法的部分流程图如图所示,若n的值为7,key的值为78,数组元素a[0]至a[n-1]依次存放7,12,24,36,55,78,83,执行这部分流程后,输出c的值为()
A.0 B.1 C.2 D.3
重难点1二分查找的算法思想
若题目是要查找的数key已知,采用列表法比较快,用表格列出每次查找数组d的区间开始位置i、j和比较数的位置m及值a[m],模拟对分查找的过程。中间位置m的计算公式为m=(i+j)∥2和m=(i+j+1)∥2,当i+j为奇数时,两者没有区别;当i+j为偶数时,中间位置有两个,前者是中间偏左,后者是中间偏右。
例1在存储8个非降序元素的数组a中,查找key的代码如下,
key=int(input(″输入要查找的数据:″))
i=0;j=len(a)-1
f=[0]*len(a)
whilei=j:
m=(i+j)∥2
f[m]=1
ifkey==a[m]:
break
ifkeya[m]:
j=m-1
else:
i=m+1
print(f)
运行该程序,输出的结果可能是()
A.[1,1,0,1,0,0,0,0] B.[1,1,1,1,0,0,0,0]
C.[0,0,1,1,0,0,0,0] D.[0,0,0,1,1,0,1,0]
变式1有如下Python程序段:
importrandom
a=[A,#,B,C,D,E,#,F]
i=0
j=len(a)-1
x=random.choice(ABCDEF)#从字符串ABCDEF中随机选出一个字符
whilei=j:
mid=(i+j)∥2
ifa[mid]==x:
break
elifa[mid]==#ora[mid]x:
j=mid-1
else:
i=mid+1
print(a[mid])
则程序运行后,输出结果不可能为()
A.A B.B C.C D.D
例2运行如下Python程序段,若输入“B”,则变量cnt的值为()
a=[A,B,C,D,E,F,G]
ch=input(″输入A-G之间的字母:″)
cnt=0
forkeyina:
i,j=0,len(a)-1
whilei=j:
m=(i+j)∥2
ifa[m]==ch:
cnt+=1;break#终止while循环
ifa[m]==key:
break
elifa[m]key:
i=m+1
else:
j=m-1
A.1B.2C.3D.7
变式2有如下Python代码:
n=int(input(″请输入一个数:″))
a=[iforiinrange(n)]
c=0
foriinrange(1,n):
L=1;R=i-1
whileL=R:
m=(L+R)∥2
ifa[i]*a[m]==n:
c+=1
break
elifa[i]*a[m]n:
L=m+1
else:
R=m-1
print(c)
输入36,执行程序后,输出结果是()
A.1 B.2 C.3 D.4
重难点2极值查找
当一个非降序序列中存在多个连续相等的数据key时,若要查找最左边key,设置的查找条件为当a[m]==key时,还需移动j为m-1继续向左查找,当ij即i=j+1时,查找的区间不存在,此时j指向的就是第1个小于等于key的值;若要查找最右边的ke
您可能关注的文档
- 专题13 简单算法程序实现 学案(含解析)2025届高中信息技术.DOCX
- 专题14 树 学案(含解析)2025届高中信息技术.DOCX
- 专题15 队 列 学案(含解析)2025届高中信息技术.DOCX
- 专题16 栈 学案(含解析)2025届高中信息技术.DOCX
- 专题18 基于数据结构的算法实现 学案(含解析)2025届高中信息技术.DOCX
- 专题八 系统分析 学案(含解析)2025届高中通用技术.DOCX
- 专题二 人机关系 学案(含解析)2025届高中通用技术.DOCX
- 专题九 控制分析 学案(含解析)2025届高中通用技术.DOCX
- 专题六 构件的受力形式分析 学案(含解析)2025届高中通用技术.DOCX
- 专题七 流程分析与设计 学案(含解析)2025届高中通用技术.DOCX
- 6.2探索2互联网社会与新业态 教学设计 2024—2024学年苏科版(2023)初中信息技术七年级下册.docx
- 6.1互联网应用与新技术 教学设计 2024—2024学年苏科版(2023)初中信息技术七年级下册.docx
- 5.3互联网安全法律法规的作用及意义 教学设计 2024—2024学年苏科版(2023)初中信息技术七年级下册.docx
- 5.2个人信息资源的防护措施 教学设计 2024—2024学年苏科版(2023)初中信息技术七年级下册.docx
- 项目十 体验餐厅服务员工作教学设计2024—2025学年人教版初中劳动技术八年级上册.docx
- 项目七《修补自行车轮胎》教学设计 2024—2025学年人教版初中劳动技术八年级上册.docx
- 义务教育版(2024)三年级信息科技 第30课 在线安全防范 课件.pptx
- 义务教育版(2024)四年级信息科技 第24课 抽取文本词汇云 课件.pptx
文档评论(0)