楼主: meimei8726
1842 1

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

  • 0关注
  • 1粉丝

已卖:291份资源

本科生

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 |AI写论文

+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
拉您进交流群
GMT+8, 2026-1-8 03:01