数据机构-折半查找法(二分查找法)-Python实现

Python实现二分查找法(基于顺序表)

 1 class List:
 2     elem=[]        #存储顺序表元素
 3     last=-1        #设置初始为-1
 4 SeqList = List()   #创建一个顺序表
 5 print("欢迎来到我的二分查找(停止输入……Y,继续输入……N),回车开始下一次输入")
 6 while True:
 7     end = input()    #python3.0以后没有raw_input
 8     if end == "Y":
 9         break
10     else:
11         SeqList.elem.append(int(end,base = 0))
12         SeqList.last = SeqList.last + 1
13 def search(Li, KEY):
14     low = 1
15     height = Li.last+1
16     while low==height or low < height:
17         mid = (low + height)//2
18         if KEY == Li.elem[mid-1]:
19             print("你要找的数字在",mid,"")
20             break
21         elif KEY > Li.elem[mid-1]:
22             low = mid + 1
23         else:
24             height = mid - 1
25     if low > height:
26         print("没有找到这个数字啊!!!!!")
27 print("请输入你想要查找的数字:")
28 key = int(input())   #这是要找的关键字
29 search(SeqList,key)

调试(由键盘按大小顺序输入一列数字)

注意

  1. Python3.0以后没有raw_input函数,如果继续使用会报错
  2. Python中的与或不可以使用&&、||符号,只能用and、or
  3. “list indices must be integers or slices,not float”错误,mid的值不可以为浮点数,整除可以使用//,而不能用/,'/'获得的值可能为浮点数

 

转载于:https://www.cnblogs.com/ddpapa/p/10622311.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值