- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二分专题训练(学生用)
二分查找与二分答案
二分查找法也称折半查找法,它充分利用了元素间的次序关系,采用分治策
略,可在最坏的情况下用O(logn)完成查找任务。它的基本思想是:先把n个元
2
素从小到大排序,然后取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,
算法终止;如果xa[n/2],则我们只要在数组a 的左半部分继续搜索x;如果
Xa[n/2],则我们只要在数组a的右半部分继续搜索x,直到查找成功或查找完
毕为止。
二分查找的算法框架如下:
left:=1;right:=n;
While left=right do
Begin
mid:=(left+right) div 2;
if x=a[mid] then 查找成功,输出mid 的值并结束
if xa[mid] then left:=mid+1//往数组的右边找
Else right:=mid+1;//往数组的左边找
End;
输出 “查找不成功”
在查找过程中我们每次把查找的范围缩小了一半,在最坏情况下查找logn
2
次就可以得到结果。注意:
(1)二分查找在数据有序的情况下才能完成,即进行二分查找前数据必须先
排序。上述框架是以数据已从小到大排序为前提条件的。
(2)当xa [mid]时,x如果存在的话应该是在数组的[mid+1,right]中,此
时的left改为mid+1,而不是mid;同理,当xa[mid]时,x如果存在的话应该
在数组的[left,mid-1]里,此时的right应该改为mid-1,而不是mid。
(3)二分查找的结束条件是 “leftright”。
(4)二分查找的前提条件是数据必须单调有序。
问题 A: 找朋友(余姚2013第2题)
时间限制: 1 Sec 内存限制: 128 MB
提交: 8 解决: 3
[提交][状态][讨论版][Edit] [TestData]
题目描述
小学毕业后,同学们都进入了不同的初中,小明非常想念小伙伴们,所以他打算
联系小学的同学们。现在他得到了市内某所初中的所有名单,找出其中小明的小
伙伴们。
输入
第一行一个整数n,表示某初中人数。
接下来n行,每行一个字符串,只有小写字母组成,表示该校每个人的拼音。数
据保证没有人拼音相同,且已经按照字典序从小到大排序。
第n+2行有一个整数m,表示小明的小伙伴个数。
最后m行,每行一个字符串,只有小写字母组成,表示每个小伙伴的拼音,同样
保证没有重复。
输出
输出所有在该校的小伙伴的拼音。
每行一个拼音,顺序按照小伙伴给出的顺序。
样例输入
3
alice
bob
zhangsan
2
lisi
zhangsan
样例输出
zhangsan
提示
【样例1解释】
学校有3人,小伙伴有2个,zhangsan在这个学校,因此输出
zhangsan
【输出输出样例2】
friends.in friends.out
2 zhangsan
lisi lisi
zhangsan
3
zhangsan
lisi
alice
【样例2解释】
学校有2人,小伙伴有3个,有zhangsan和lisi两人出现在名
单中,小伙伴名单输入时lisi在zhangsan后面,所以在输出的小伙伴名单中,
lisi排在后面。
【数据范围】
对于70%的数据,n=1000,m=100
对于100%的数据,n=100000,m=10000,每个人拼音长度不超过15。
所有数据,学校学生名单中的姓名,都是按照字典序从小到大排序。
var a,b:array[1..100001] of string;
n,m,s,i,j,mid,r,l:longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
re
您可能关注的文档
最近下载
- 小学数学教学中学生逻辑推理能力的培养策略教学研究课题报告.docx
- [浙江]永康市委统战部编制外工作人员招聘笔试历年参考题库附带答案详解.doc VIP
- 教你三步查看老婆微信聊天记录.docx VIP
- 2022年公务员考试内蒙古行政职业能力测验真题.doc VIP
- 兴澄特钢海洋工程用钢研究与开发现状..ppt VIP
- 运动解剖学课件.pptx VIP
- 2025年气瓶检验员考试题及答案.docx VIP
- 大学藏文四级考试题库及答案.doc VIP
- (2025秋新版)人教版三年级数学上册全册教案.pdf
- 新解读《GB_T 20970-2015石油天然气工业 井下工具 封隔器和桥塞》最新解读.docx VIP
文档评论(0)