講述車輪上的故事,《極限競速:地平線5》任務線引人入勝
阿新 • • 發佈:2021-11-30
1 # 為了返回找到列表的下標,故而攜帶兩個引數 2 def binary_search(num, my_list, left, right): 3 if left == right: 4 return left if my_list[left] == num else f'沒找到{num}' 5 mid = (right+left) // 2 6 mid_num = my_list[mid] 7 if num == mid_num: 8 return mid 9 elif num > mid_num:10 return binary_search(num, my_list, mid+1, right) 11 else: 12 return binary_search(num, my_list, left, mid-1) 13 14 15 # 二分查詢的迴圈實現 16 def while_binary_search(num, lis): 17 left = 0 18 right = len(lis) - 1 19 while True: 20 if left == right: 21 returnleft if lis[left] == num else f'沒找到{num}' 22 mid = (left+right) // 2 23 mid_num = lis[mid] 24 if mid_num == num: 25 return mid 26 elif mid_num > num: 27 right = mid - 1 28 else: 29 left = mid + 1 30 31 32 if __name__ == '__main__': 33 my_list = [0, 1, 5, 7, 10, 11, 15, 18, 19] 34 # print(binary_search(10, my_list, 0, len(my_list)-1)) 35 print(while_binary_search(15, my_list))