查找就是在集合中寻找特定值的过程,线性查找是查找算法中最简单的算法,下面介绍原理。
线性查找
我们假设有一张写满数字的纸,没有特定的顺序,当要确定数字13是否在这些数字中时,我们会怎么做?我们可能会从头到尾的看这些数字,并将每个数字和13进行比较,当在这个过程中发现13的时候,退出并显示找到了它;如果最后没有发现13,就显示13并不在其中。这个策略就叫做“先行查找”,也就是逐个查找数据项列表,直到找到目标值。简单代码如下:
def search(x,nums):
for i in range(len(nums)):
if nums[i]==X: #item found, return the index value
return i
return -1 #loop finished, item was not in list
这种方法对于数据量不是很大的列表来说还可以,但对于数据量很大的还有 更好的方法。下面介绍一下二分查找。
二分查找
二分查找的思想也很简单,就像猜数字游戏,选择1~100之间的数字,每次猜测告诉结果是否正确、猜的过高还是过低。我们可以先猜测50,如果数字更高,则可能范围是50~100.下一个猜测逻辑就是75,每次我们猜测剩下数字的中间值,尝试缩小可能的范围。这个策略就是二分查找。二分指的是两个,在每个步骤中,我们将剩余的数字分为两个部分。二分查找适用于查找有序列表。基本思想是用两个变量来跟随数据项列表范围的端点,最初将变量low和high分别设置为列表的第一个和最后一个位置。算法的核心是一个循环,查看剩余范围中间的数据项,将它与x进行比较。如果x小于中间数据项,则移动high,这样就能查找缩小到下半部分;如果x较大,则我们移动low。当找到x或不再有更多的地方(low>high)时ii,循环终止。代码如下:
def search(x,nums):
low=0
high=len(nums)-1
while low<=high:
mid=(low+high)//2
item=nums[mid]
if x==item:
return mid
elif x<item:
high=mid-1
else:
low=mid+1
return -1
继续阅读与本文标签相同的文章
-
有关厂商都在积极布局功率碳化硅
2026-05-18栏目: 教程
-
反向链接对网站权重有影响吗?
2026-05-18栏目: 教程
-
国内首创:海南台风灾害影响评估三维模拟系统投入试运行
2026-05-18栏目: 教程
-
大智能时代,需要什么样的产品经理
2026-05-18栏目: 教程
-
怎样才能让用户更喜欢你的APP应用
2026-05-18栏目: 教程
