【知识梳理】

【典例分析】
【例题65】
题目:二分查找
1 #二分查找 2 import os 3 #定义二分查找函数 4 def binary_devide_search ( find_number, data_list , down_edge, up_edge ): 5 #迭代终结条件:上界大于下界 6 if (up_edge >= 1) and (down_edge < len(data_list)) and (up_edge >= down_edge): 7 #下标指针指向列表长度的中点附近 8 mid_point = int( down_edge / 2 + up_edge / 2 ) 9 #调试器print(down_edge,'\t',mid_point,'\t',up_edge,'\t','\t',data_list[mid_point],'\t',find_number) 10 #刚好找到了 11 if data_list[mid_point] == find_number: 12 return ('找到{0}啦!下标是{1}'.format(find_number,mid_point)) 13 #大了往左找 14 elif data_list[mid_point] > find_number: 15 #下界:我 等于 我 自 己 16 down_edge = down_edge 17 #上界:我 等于 中 指 针 - 1 18 up_edge = mid_point - 1 19 #用新的上下界去迭代查找 20 return binary_devide_search( find_number, data_list, down_edge, up_edge ) 21 #小了往右找 22 elif data_list[mid_point] < find_number: 23 #上界:我 等于 我 自 己 24 up_edge = up_edge 25 #下界:我 等于 中 指 针 + 1 26 down_edge = mid_point + 1 27 #用新的上下界去迭代查找 28 return binary_devide_search( find_number, data_list, down_edge, up_edge ) 29 #上界都比下界小了 30 else: 31 return ('找不到{0}!'.format(find_number)) 32 33 #创建被查数据并给它赋值为偶数序列吼 34 data = [2*i for i in range (1,100)] 35 #康康长啥样 36 print(data) 37 #被查数据 38 find1 = 0 39 find2 = 2 40 find3 = 37 41 find4 = 198 42 find5 = 200 43 #查他!3! 44 print(binary_devide_search(find1,data,0,len(data))) 45 print(binary_devide_search(find2,data,0,len(data))) 46 print(binary_devide_search(find3,data,0,len(data))) 47 print(binary_devide_search(find4,data,0,len(data))) 48 print(binary_devide_search(find5,data,0,len(data))) 49 50 os.system('pause>nul')

【例题66】
题目:线性查找,略
浙公网安备 33010602011771号