神谕的版如何实现二分查找

  介绍

这篇文章主要介绍神谕的版如何实现二分查找,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

前提:升序数组,待查元素在数组中。

二分查找:就是一个递归函数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)}”) 

结果如下:

神谕的版如何实现二分查找

以上是神谕的版如何实现二分查找的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

神谕的版如何实现二分查找