QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 201|回复: 0

[Python] 在Python中实现二分查找法的递归

[复制链接]

等级头衔

积分成就    金币 : 2841
   泡泡 : 1516
   精华 : 6
   在线时间 : 1294 小时
   最后登录 : 2024-11-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2023-8-7 06:50:30 | 显示全部楼层 |阅读模式
1 问题
5 o  l7 o  i7 s  [( _2 ], f, M如何在Python中实现二分查找法的递归?
) i3 C) K2 w* g0 }7 p2 方法8 B$ i" n% w! s, x  N. L
二分查找法又称折半查找法,用于预排序列表的查找问题。& p. y5 n( P+ ~4 j% w0 F: f/ l, J
要在排序列表alist中查找元素t,首先,将列表alist中间位置的项与查找关键字t比较,如果两者相等,则查找成功;否则利用中间项将列表分成前、后两个子表,如果中间位置项目大于t,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,即查找成功;或者直到子表不存在为止,即查找不成功。
( C0 M, a$ t4 Z9 G& p0 N
  1. def _binarySearch(key,a,lo,hi):
  2. if hi<=lo:
  3. return -1        #查找失败,返回一1
  4. mid=(lo + hi)//2  #计算中间位置
  5. if a[mid]>key:    #中间位置项目大于查找关键字
  6. return_binarySearch(key,a,lo,mid)    #递归查找前一子表
  7. elif a[mid]<key:      #中间位置项目小于查找关键字
  8. return_binarySearch(key,a,mid+1,hi)    #递归查找后一子表
  9. else:       #中间位置项目等于查找关键字
  10. return mid     #查找成功,返回下标位置
  11. def binarySearch(key,a)     #二分查找
  12. return_binarySearch(key,a,0,len(a))    #递归二分查找法
  13. def main():
  14. a=[1,13,26,33,45,55,68,72,83,99]
  15. print("关键字位于列表索引",binarySearch(33,a))#二分查找关键字33
  16. print("关键字位于列表索引",binarySearch(58,a))#二分查找关键字58
  17. if__name__=='__main__':main()
3 结语
- b3 Z# i9 J1 W$ s% U对于如何在Python中实现二分查找法的递归问题,经过测试,是可以实现的,在python中还有很多查找法,比如顺序查找法、冒泡排序法等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-11-22 05:08

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表