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)
调试(由键盘按大小顺序输入一列数字)
注意
- Python3.0以后没有raw_input函数,如果继续使用会报错
- Python中的与或不可以使用&&、||符号,只能用and、or
- “list indices must be integers or slices,not float”错误,mid的值不可以为浮点数,整除可以使用//,而不能用/,'/'获得的值可能为浮点数