查找在Python中是一份非常基础且重要的内容,那么查找的作用又是什么呢?目前主流的查找算法又分几种呢?那么今天听范范老师娓娓道来。
首先我们先定义下什么是查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
那么目前主流的查找方式有两种:顺序查找和二分查找
1.顺序查找:其也称为线性查找,即从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止。其实顺序查找就是for循环。
2.二分查找:其有叫做折半查找,从有序列表的初始候选区开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。
接下来我们通过Python代码来详解顺序查找和二分查找。
顺序查找
此时我们定一个列表alist=[1,2,3,4,5,6,7,8,9],然后我们通过顺序查找来查看列表中是否存在6和10。
列表查找——详解顺序查找和二分查找
运行后发现,6在列表中,而10不在列表中,符合我们的预期。
列表查找——详解顺序查找和二分查找
二分查找
此时我们定一个列表alist=[1,2,3,4,5,6,7,8,9],然后我们通过二分查找来查看列表中是否存在6和10。
二分查找的工作原理如下(我们以查找是否存在6位列子):
列表查找——详解顺序查找和二分查找
初始时,我们将left指针指向列表第0位,而将right指针指向列表的第8位
通过将(left+right)//2=(0+8)//2=4,此时第4位就是计算出中间值标记为mid,此时我们将mid值5和我们要查找的元素6进行对比,发现5<6,此时left指针移动到mid位置加1,如下图所示
列表查找——详解顺序查找和二分查找

继续通过(left+right)//2=(5+8)//2=6,此时第6位就是计算出中间值标记为mid,此时我们将mid值7和我们要查找的元素6进行对比,发现7>6,此时right指针移动到mid位置减1,如下图所示
列表查找——详解顺序查找和二分查找
继续通过(left+right)//2=(5+5)//2=5,此时第5位就是计算出中间值标记为mid,此时我们将mid值6和我们要查找的元素6进行对比,发现6=6,此时我们终止算法并输出元素6找到了,其存放在列表的第5位上,如下图所示
列表查找——详解顺序查找和二分查找
代码如下:
列表查找——详解顺序查找和二分查找
运行结果为:
列表查找——详解顺序查找和二分查找