二分法

在一个数字集合中查找某个值存不存在

 1 data = range(0,100000000)
 2 
 3 # data = [1,3,5,10,11,12,14,17,19,19,20]
 4 
 5 def binary_search(datasets,find_num):
 6     if len(datasets) >0:
 7         middle_pos = int(len(datasets)/2)
 8         if datasets[middle_pos] == find_num:
 9             #find it
10             print("Find num:",datasets[middle_pos])
11         elif datasets[middle_pos] > find_num:
12             #data in left side
13             print("33[31;1mgoing to left side33[0m",datasets[0:middle_pos],datasets[middle_pos])
14             binary_search(datasets[0:middle_pos],find_num)
15         else:#data in right side
16             print("33[32;1mgoing to right side33[0m",datasets[middle_pos+1:],datasets[middle_pos])
17             binary_search(datasets[middle_pos+1:],find_num)
18 
19     else:
20         print("cannot find the num",find_num)
21 
22 binary_search(data,5000004)
原文地址:https://www.cnblogs.com/wangmo/p/6109764.html