二分法查找
- 主要通过对 low 和 high 指针来运算;
- low = middle +1
- high = middle -1
- middle = (high-low)//2
- 时间复杂度:log2n;
- 比较次数:log2n+1;
- 属于静态查找;
- 前提条件:查找的数据必须是排好序的;
代码
def split_method(data, find_data):
left_point = 0
right_point = len(data) - 1
while left_point < right_point:
middle_point = (left_point+right_point)//2
if find_data < data[middle_point]:
right_point = middle_point - 1
elif find_data > data[middle_point]:
left_point = middle_point + 1
else:
return middle_point
return -1
if __name__ == '__main__':
data_all = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(split_method(data_all, 2))