创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜

前言
程序=数据结构+算法,算法是数学理论和工程实现的杂糅,是一个十分有趣神奇的学问。搞懂算法用另一种视角看编程,又会是一种全新的感受,如果你也在学习算法,不妨跟主任萌新超差一起学习,拿下算法!
系列文章目录
总结
本期的内容将介绍四大查找算法,即顺序查找、二分查找、插值查找和斐波那契查找,通过本期内容你不仅能知道他们的代码如何用python实现,还将学会用装饰器来查看算法的运行时间等等!
目录
查找
什么是查找
查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
四大查找方法
顺序(线性)查找
二分查找
插值查找
斐波那契查找
列表查找(线性表查找)
列表查找:从列表中查找指定元素,分为顺序查找与二分查找
输入:列表、待查找元素
输出:元素的下标(未找到元素时一般返回None或者-1)
python中列表查找函数:index()
顺序查找
顺序查找:也称为线性查找,从列表第一个元素开始,顺序进行搜索,直到找到目标元素或搜索到最后一个元素为止。(最糟糕的形式:从头找到尾)
代码示例
def linear_search(lst,value):
for ind,v in enumerate(lst):
if v == value:
return ind
else:
return None
lst1 = [2,3,23,13,25]
print(linear_search(lst1,13))
# 结果:3
顺序查找时间复杂度:O(n)
二分查找
二分查找:二分查找输入的是一个有序的元素列表(必须有序)。如果查找的元素包含在列表中,二分查找返回其位置;否则返回null。
一般而言,对于包含n个元素的列表,用二分查找最多需要log2N步。
举例说明:
例1:
从以下列表查找元素3:
[1,2,3,4,5,6,7,8,9]
查找步骤:
利用二分查找,先设置1为left,9为right,则中间的值mid(5)为(left+right)//2,此时5>3,说明目标值在right的左边;
此时将right移到4,left不变,则mid(left+right)//2=2,2<3,说明在mid值的右边;
随后将left移到了3,right(4)位置不变,mid=(left+right)//2=3,输出mid的下标,若最后找不到,则输出null。
代码示例
def func1(lst,val):
left = 0
right = len(lst) - 1
while left <= right: # 候选区有值
mid = (left + right)//2 # python中用地板除
if lst[mid] == val:
return mid
elif lst[mid] > val: # 待查找值在mid

本文介绍了四种常见的查找算法:顺序查找、二分查找、插值查找和斐波那契查找。通过Python代码示例详细解释了每种查找方法的实现和效率,特别探讨了在不同场景下哪种查找方法更优。同时,还利用装饰器分析了查找算法的运行时间。
最低0.47元/天 解锁文章
1267





