-
大饼找芝麻(二分法查找)
- 二分法针对的对象要是有序的队列,通过索引找到你要查找的值
- 思想:取一个索引开头left,取一个索引末尾(len(队列)-1)right,让你的值跟(left + right)//2(middle)比
- 如果索引middle值比你查的值大,把middle赋值给right,反之把middle赋值给left;
- 代码展示:
-
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111] n = 456 left = 0 right = len(lst) - 1 count = 1 while left <= right: middle = (left + right) // 2 if n > lst[middle]: left = middle + 1 elif n < lst[middle]: right = middle - 1 else: print('查找次数%s' % count) print("存在位置%s" % middle) break count = count + 1 else: print("不存在")
用递归方法实现二分法:
-
def binary_search(left, right, n): middle = (left + right)//2 if left > right: return -1 if n > lst[middle]: left = middle + 1 elif n < lst[middle]: right = middle - 1 else: return middle return binary_search(left, right, n) print(binary_search(0, len(lst)-1, 65) )
Python(二分法查找)
猜你喜欢
转载自blog.csdn.net/hgdl_sanren/article/details/81296944
今日推荐
周排行