# 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)