首页 > 代码库 > 查找 —— 二分查找[递归+非递归]
查找 —— 二分查找[递归+非递归]
二分查找
二分查找是对一组有序序列进行查找。根据要查找的k和序列中间元素比较,动态的移动查找范围。以对折的方式缩小查找范围。
递归方式:
def binarySearch(A,left,right,k): if left<= right: mid =(left+right)//2 if A[mid] == k: return mid if A[mid]>k: return binarySearch(A,left,mid-1,k) #此处要返回函数运行结果而不是仅仅调用函数 else: return binarySearch(A,mid+1,right,k) else: return -1 A= [1,2,3,4,5,6,7] left = 0 right = len(A)-1 print(binarySearch(A,left,right,3))
非递归方式:
def binarySearch(A,k): left = 0 right =len(A)-1 while left<=right: mid = (right+left)//2 if A[mid] == k: return mid if A[mid]>k: right = mid-1 else: left = mid+1 return -1 a = [1,2,3,4,5] print(binarySearch(a,1))
查找 —— 二分查找[递归+非递归]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。