数据结构与算法 递归--二分查找
·
数据结构与算法 递归–二分查找

import os
import re
import shutil
def binary_search(data,target,low,high):
if low>high:
return False
else:
mid = (low + high)//2
if target == data[mid]:
return True
elif target <data[mid]:
return binary_search(data, target, low, mid-1)
else:
return binary_search(data, target, mid+1, high)
data = [2,4,5,7,8,9,12,14,17,19,22,25,27,28,33,57]
binary_search(data, 12, 0, 15)
典型算法递归算法–二分查找
前提:当序列有序并且可通过索引访问。
该算法维持两个参数low和high,这样可使所有的索引位于low和high之间。
首先,low=0和high=n-1。然后比较目标值和候选项中间值,即索引项[mid]的数据:
m i d = [ ( l o w + h i g h ) / 2 ] mid = [(low + high)/2] mid=[(low+high)/2]
需考虑以下情况:
- 如果目标刚好等于[mid]的数据,然后找到正在寻找的值,则查找成功并且终止程序。
- 如果目标值小于[mid]的数据,需对前半部分重复进行这一过程查找,即在low 和 mid -1中进行查找。
- 如果目标值大于[mid]的数据,需对后半部分重复进行这一过程查找,即在mid -1 和 high之间进行查找。
- 如果最后low大于high,说明索引范围内没有该值,则查找失败。
注:二分查找的时间复杂度为 O(㏒ n)
参考:Python结构与算法一书
算法动态展示可以使用网站:https://visualgo.net/zh
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)