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

 

相关文章:

  • 2022-12-23
  • 2021-08-17
  • 2021-05-11
  • 2021-12-02
  • 2022-12-23
  • 2021-06-16
  • 2021-05-16
猜你喜欢
  • 2022-03-06
  • 2021-06-03
  • 2022-12-23
  • 2021-12-14
  • 2022-01-23
  • 2021-12-08
相关资源
相似解决方案