Python实现二分查找法(基于顺序表)
class List: elem=[] #存储顺序表元素 last=-1 #设置初始为-1 SeqList = List() #创建一个顺序表 print("欢迎来到我的二分查找(停止输入……Y,继续输入……N),回车开始下一次输入") while True: end = input() #python3.0以后没有raw_input if end == "Y": break else: SeqList.elem.append(int(end,base = 0)) SeqList.last = SeqList.last + 1 def search(Li, KEY): low = 1 height = Li.last+1 while low==height or low < height: mid = (low + height)//2 if KEY == Li.elem[mid-1]: print("你要找的数字在",mid,"位") break elif KEY > Li.elem[mid-1]: low = mid + 1 else: height = mid - 1 if low > height: print("没有找到这个数字啊!!!!!") print("请输入你想要查找的数字:") key = int(input()) #这是要找的关键字 search(SeqList,key)
调试(由键盘按大小顺序输入一列数字)
注意
- Python3.0以后没有raw_input函数,如果继续使用会报错
- Python中的与或不可以使用&&、||符号,只能用and、or
- “list indices must be integers or slices,not float”错误,mid的值不可以为浮点数,整除可以使用//,而不能用/,'/'获得的值可能为浮点数