二分专题训练(学生用).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档