1.问题: 在[1, 2, 3, 4, 5, 6]中,找出满足 x*x > target的最小的数;
2. l r mid array[mid] flag(指针) target
0 5 2 9 -1 15
3 5 4 25 4 15
3 3 3 16 3 15
3.代码
# [1, 2, 3, 4, 5, 6]; target 15 import time def compare_two(num_1, target): return num_1 * num_1 > target def my_binary_search(array, target): flag = -1 l, r = 0, len(array) - 1 while l <= r: mid = (l+r) // 2 print('mid: is {} - l: {} - r: {} - array[mid]: {}'.format(mid, l, r,array[mid])) time.sleep(3) if compare_two(array[mid], target): r = mid -1 flag = mid else: l = mid + 1 if flag == -1: return -1 else: return array[flag] my_array = [1, 2, 3, 4, 5, 6] print(my_binary_search(my_array, 0))