<每日一题>题目6:二分查找

it2022-05-05  198

1 #二分查找 2 ''' 3 1.end问题 4 2.44对应的end<start 找不到情况 5 3.返回值递归的情况 6 4,611,aim太大的情况 7 ''' 8 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 9 def find(l,aim,start=0,end=None): 10 end = len(l) if end is None else end 11 Mid_index = (end - start) // 2 +start 12 if aim <= l[len(l)-1]: 13 if end >= start: 14 if l[Mid_index] > aim: 15 return find(l,aim,start=start,end = Mid_index-1) 16 elif l[Mid_index] < aim: 17 return find(l,aim,start=Mid_index+1,end=end) 18 elif l[Mid_index] == aim: 19 return Mid_index 20 else: 21 return '找不到!' 22 else: 23 return '比列表最大数都大,找不到!' 24 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 25 ret = find(l,411) 26 ret1 = find(l,44) 27 ret2 = find(l,66) 28 ret3 = find(l,67) 29 print(ret,ret1,ret2,ret3)

  运行结果:

1 比列表最大数都大,找不到! 找不到! 17 18

 

转载于:https://www.cnblogs.com/shuimohei/p/9687694.html


最新回复(0)