二分查找

 1 lit = [11, 22, 33, 44, 55, 66, 77, 88, 99]
 2 
 3 
 4 def func(left, right, n):
 5     middle = (left + right)//2
 6     if left > right:
 7         return -1
 8     if n > lit[middle]:
 9         left = middle + 1
10     elif n < lit[middle]:
11         right = middle - 1
12     else:
13         return middle
14     return func(left, right, n)
15 
16 
17 print(func(0, len(lit)-1, 56))

  

 

方法二:

 1 ll = [5, 66, 25, 4, 11, 23, 66, 98, 45, 11, 25, 654, 256, 358, 45, 63, 2, 54, 8, 45, ]
 2 ll.sort()
 3 print(ll)
 4 n = 25
 5 left = 0
 6 right = len(ll) - 1
 7 while left < right:
 8     middle = (left + right)//2
 9     if n > ll[middle]:
10         left = middle + 1
11     elif n < ll[middle]:
12         right = middle - 1
13     else:
14         print("找到了")
15         print(middle)
16         break
17 else:
18     print("找不到")

 

posted @ 2021-11-03 15:10  余鑫2020  阅读(26)  评论(0)    收藏  举报