使用python进行简单的二分法操作

相关链接:

  1. Linux的部分终端操作

  2. Python对象的表现形式(元组,列表,集合,字典)

  3. Python中关于变量的部分总结


实现代码:

def t_search (list, item):  #list:需要查询的列表,item:列表的标签
  first = 0
  last = len(list)-1
  while first <= last:
    half = (first + last)/2
    if list[half] == item:
      return half  #查询成功,返回标签值
    else:
      if list[half] > item:
        last = half-1
      else:
        first = half+1
  return None      #列表中没有这个元素
#------------使用方式-------------#


x=[2,3,4,5,6,7,8]


print t_search(x,5)    #起始标签为0

代码解释:

首先定义一个二分法函数 “t_search”,函数的两个参数是list(表示需要查询的数列,需要强调一下,数列必须是有次序的)和item(用来返回查询元素的标签,如果元素不在数列内,那么返回None)。

之后,定义一个first表示每次查询的起点,一个last表示每次查询的终点。第一次查询从最中间half开始,需要注意的是,有可能最中间的那个元素的标签是小数,所以可以进行取整。

接着,就是不断地进行迭代。当判断第一次查询后的结果偏小时,则改变first的大小进行重新查询。

最后,当查询全部结束后,没有发现需要查询的元素则返回None,否则返回标签值。


原理分析:

你参加了超市的“猜价格”活动,猜中价格就可以拿到商品。超市提示商品的价格是0到100之间,且为整数。你会怎么猜

一种简单而实用的方法是,先猜50,如果超市提示高了,你就会猜25,如果超市提示低了,你又会猜37。依此类推,你就可以在限定的次数内猜到商品价格。

这就是一种简单的二分法例子,可以根据这个例子来理解代码。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月丶匈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值