Python全系列 教程
3567个小节阅读:5929.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列
先找到那个有序序列的中间元素mid,然后拿它和要找的元素K进行比较,就可以初步判断K所在范围,既然查找范围已确定,自然该范围之外的元素就可以不用再查找了。反复重复操作,直到找到数据
xxxxxxxxxx
from typing import List
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while left <= right:
# 计算出中位索引
mid = (right-left)//2 + left
num = nums[mid]
if num == target:
return mid
elif num > target:
right = mid - 1
else:
left = mid + 1
return -1
xxxxxxxxxx
def search(nums, target: int) -> int:
left = 0
right = len(nums)-1
if nums !=[]:
mid = (left + right)//2
if target > nums[mid]:
return search(nums[mid+1:],target)
elif target < nums[mid]:
return search(nums[:mid],target)
else:
return 1
else:
return -1
xxxxxxxxxx
def search2(nums,target,left,right):
if left <= right:
mid = (left+right)//2
if target > nums[mid]:
left = mid + 1
return search2(nums,target,left,right)
elif target < nums[mid]:
right = mid - 1
return search2(nums,target,left,right)
else:
return mid
else:
return -1