创作不易,来了的客官点点关注,收藏,订阅一键三连❤😜
前言
程序=数据结构+算法,算法是数学理论和工程实现的杂糅,是一个十分有趣神奇的学问。搞懂算法用另一种视角看编程,又会是一种全新的感受,如果你也在学习算法,不妨跟主任萌新超差一起学习,拿下算法!
系列文章目录
总结
本期的内容将介绍四大查找算法,即顺序查找、二分查找、插值查找和斐波那契查找,通过本期内容你不仅能知道他们的代码如何用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步。
举例说明:
例