递归方法
# coding:utf-8def binary_search(a_list, key):n = len(a_list)if n == 0:return Falsemid = n//2if a_list[mid] == key:return Trueelif a_list[mid] < key:return binary_search(a_list[mid+1:], key)else:return binary_search(a_list[:mid], key)if __name__ == "__main__":test_list = [1,1,2,3,5,8,13,21,34,55,89,144]print(binary_search(test_list, 3))
非递归方法
# coding:utf-8def binary_search(a_list, key):n = len(a_list)if n == 0:return Falsestart = 0end = n-1while end >= start:mid = (end+start)//2if a_list[mid] == key:return Trueelif a_list[mid] < key:start = mid + 1else:end = mid - 1return Falseif __name__ == "__main__":test_list = [1,1,2,3,5,8,13,21,34,55,89,144]print(binary_search(test_list, 24))
