介绍
这篇文章主要介绍神谕的版如何实现二分查找,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
前提:升序数组,待查元素在数组中。
二分查找:就是一个递归函数c。待查元素,当前数组中位数b,如果b=则返回b的索引,b>一个则在b左侧的子数组中调用函数c,否则在b右侧子数组中调用函数c。
第一次思考,按着上面的思路编程后的结果:
def binary_search(指数、价值): 如果一个[(len (a) - 1)//2]==值: 返回索引+ (len (a) - 1)//2 elif [(len (a) - 1)//2] & lt;值: 返回binary_search(指数+ (len (a) - 1)//2 + 1,一个[(len (a) - 1)//2 + 1:],值) 其他: 返回binary_search(指数(0:(len (a) - 1)//2 + 1],值)
第二次思考,简化中位数计算逻辑:
def binary_search(指数、价值): 如果一个(len (a)//2)==值: 回报指数+ len (a)//2 elif (len (a)//2] & lt;值: 返回binary_search(指数+ len (a)//2,一个(len (a)//2:),值) 其他: 返回binary_search(指数(0:len (a)//2],值)
第三次思考,去掉,改为λ形式:
binary_search=λ指数,价值:指数+ len (a)//2如果[len (a)//2]==价值其他binary_search(指数+ len (a)//2,一个(len (a)//2:),值)如果(len (a)//2) & lt;其他值binary_search(指数[0:len (a)//2],值)
引用>以上就是二分查找变为“一行代码”版的过程。
运行测试:
if __name__==& # 39; __main__ # 39;:=(1、2、33,43岁,52岁,66年,88年,99年,111年,120年) 印刷(f"目标指数:{binary_search(0,,值=https://www.yisu.com/zixun/33)}”)结果如下:
以上是神谕的版如何实现二分查找的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
神谕的版如何实现二分查找