请选择 进入手机版 | 继续访问电脑版
楼主: meimei8726
1522 1

[其他] 提问一个python的二元查找的问题,感谢 [推广有奖]

  • 0关注
  • 1粉丝

本科生

74%

还不是VIP/贵宾

-

威望
0
论坛币
1648 个
通用积分
0
学术水平
3 点
热心指数
4 点
信用等级
3 点
经验
829 点
帖子
103
精华
0
在线时间
80 小时
注册时间
2007-5-15
最后登录
2019-5-4

meimei8726 发表于 2016-2-24 12:30:07 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
刚开始学python,看到二元查找,看不懂了,求大神解答!
书上是这么些的:
def search(sequence,number,lower,upper):
    if lower==upper:
        assert number==sequence[upper]
        return upper
    else:
        middle=(lower+uppper)//2
        if number>sequence[middle]:
            return search(sequence,number,middle+1,upper)
        else:
            return search(sequence,number,lower,middle)


提问:
1.第一部分,返回的是sequence列表中upper这个数么?
2.写完之后,像书上写的输入seq=[4,8,34,67,95,100,123],然后search(seq,34),但是说缺少两个变量
3.还有提示错误out of range
能有大神帮忙解释一下吗,谢谢啊!在线等~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python sequence Number Middle search python

wildcloud 发表于 2016-2-26 22:27:43 |显示全部楼层 |坛友微信交流群
lower, and upper is the index of the list

there is a typo at line 6 : uppper

call: search(seq, 34, 0, len(seq), which returns 2 as the third element in the list
Python has it own module: bisect


https://github.com/enthought/Python-2.7.3/blob/master/Lib/bisect.py

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-18 18:40