【知识梳理】

 

 

【典例分析】

【例题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')
【例题65代码】

 

 

【例题66】

题目:线性查找,略