Python 二分法
# coding = utf-8 import random def Creat_Arr(): arr = [] for i in range(0,50) : arr.append(random.randint(1,100)) i += 1 arr.sort() #排序 return arr def Select_Key(): key = random.randint(1,100) return key def BinarySearch(arr, key): # 记录数组的最高位和最低位 start = 0 end = len(arr) - 1 if key in arr: # 建立一个死循环,直到找到key while True: # 得到中位数 # 这里一定要加int,防止列表是偶数的时候出现浮点数据 center = int((start + end) / 2) # key在数组左边 if arr[center] > key: end = center - 1 # key在数组右边 elif arr[center] < key: start = center + 1 # key在数组中间 elif arr[center] == key: print(str(key) + "在数组里面的第" + str(center+1) + "个位置") return arr[center] else: print("没有该数字!") if __name__ == '__main__': arr = Creat_Arr() key = Select_Key() print ('生成数组 : %s'%arr) print('生成key : %s'%key) BinarySearch(arr,key)