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)

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

注意

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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄