如果老卫的博客对你有帮助,记得点赞关注哈!大家的支持是老卫更新的动力!!
1.顺序查找
顺序查找就是将数组中的元素与待查找值一一比较,然后直到找到为止。优点仅在于不需要额外的处理,缺点是查询速度太慢。
def sequential_search(nums:list,val:int):
for i in nums:
if(i==val):
return i
2.二分查找
对于已排好序的数组,我们可以采用二分查找法来进行查找。将待查找值与数组中间的数进行比较,如果小于中间值,则数值在左子数组中,否则在右子数组中。不断迭代,知道找到为止。
def binary_search(nums:list,val:int):
low=0
high=len(nums)-1
while(low<=high and val!=-1):
mid=(low+high)//2
if(val<nums[mid]):
high=mid-1
elif(val>nums[mid]):
low=mid+1
else:
return mid
return -1
3.插值查找法
插值查找法是二分查找法的改进。按照数据位置的分布,利用公式预测数据所在的位置,再以二分查找法渐渐逼近。
def insert_search(nums:list,val:int):
low=0
high=len(nums)-1
while(low<=high and val!=-1):
mid=low+int(((val-nums[low])/(nums[high]-nums[low]))*(high-low))
if(val<nums[mid]):
high=mid-1
elif(val>nums[mid]):
low=mid+1
else:
return mid
return -1
&spm=1001.2101.3001.5002&articleId=104682470&d=1&t=3&u=f106f59d6f99450abf1a872bab54e7f9)
270

被折叠的 条评论
为什么被折叠?



