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)

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

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

注意

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