【算法】 二分法
二分法
文字解释
二分法查找用于有序的数列,取数列正中间的值与目标值比较,若小于目标值,说明目标值在右边的区域,
再到右边的区域中取中间的值进行比较,若中间的值大于目标值,说明目标值在左边的区域,再对左边的区域获取中间的值,
如此进行查找,每次查找应该切割数列,或者标记左右边界位置,否则无法做到划分区域
代码
def func(num_list, left_index, right_index, target_num):
    # 当左边界大于右边界时 说明没有找到
    if left_index > right_index:
        print('没找到')
    # 获取中间坐标及值
    middle_index = (left_index + right_index) // 2
    middle_value = num_list[middle_index]
    if middle_value < target_num:
        # 若小于目标值 则将左边界扩到当前中间位置的右边一位
        func(num_list, middle_index + 1, right_index, target_num)
    elif middle_value > target_num:
        # 若大于目标值 则将右边界扩到当前中间位置的左边一位
        func(num_list, left_index, middle_index - 1, target_num)
    else:
        # 不大不小 那就是找到了
        print(f'找到了 在索引为{middle_index}的位置')
l1 = [1, 2, 3, 4, 5, 7, 8, 9, 12, 13, 24, 26, 43, 152]
left = 0
right = len(l1)
target_num = 1
func(l1, left, right, target_num)
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号 
