一、顺序查找
Sequential Search
❖
如果数据项保存在如列表这样的集合中,
我们会称这些数据项具有线性或者顺序关
系。
❖
在
Python List
中,这些数据项的存储位
置称为
下标(
index
)
,这些下标都是有
序的整数。
❖
通过下标,我们就可以按照顺序来访问和
查找数据项,这种技术称为
“
顺序查找
”
❖
要确定列表中是否存在需要查找的数据项
首先从列表的第
1
个数据项开始,
按照下标增长的顺序,逐个比对数据项,
如果到最后一个都未发现要查找的项,那么查找
失败。
1、顺序查找:无序表查找代码
def sequentialSearch(alist, item):
pos = 0
found = False
while pos < len(alist) and not found:
if alist[pos] == item:
found = True
else:
pos = pos + 1
return found
testList = [1,2,3,4,5,6,23,34,24,32]
print(sequentialSearch(testList,5))
print(sequentialSearch(testList,11))
❖
数据项在列表中,比对的一般情形如何?
因为数据项在列表中各个位置出现的概率是相同
的;所以平均状况下,比对的次数是
n/2
;
❖所以,顺序查找的算法复杂度是O(n)
❖
实际上,我们在第三章的有序表
Search
方法实现中介绍过顺序查找
当数据项存在时,比对过程与无序表完全相同
不同之处在于,如果数据项不存在,比对可以提
前结束
•
如下图中查找数据项
50
,当看到
54
时,可知道后面
不可能存在
50
,可以提前退出查找