顺序查找(也叫线性查找)是最简单的查找算法。
核心思路为从数据集合的第一个元素开始,一个一个按顺序比对,直到找到目标元素,或者遍历完所有元素为止。
它不需要数据提前排序,无任何前提条件,直接暴力遍历,是所有查找算法中最基础、最容易理解的一种。
算法执行步骤如下:
(1)从列表第 1 个元素开始查找
(2)将当前元素与目标值进行比较
(3)如果相等 → 查找成功,返回位置和结果
(4)如果不相等 → 继续检查下一个元素
(5)遍历完所有元素都没找到 → 查找失败
示例代码:
def sequential_search(arr, target):
"""
顺序查找函数
:param arr: 待查找的列表(可以有序/无序)
:param target: 要查找的目标值
:return: 找到返回元素索引,未找到返回-1
"""
# 遍历列表,同时获取索引和元素
for index, value in enumerate(arr):
# 逐个比较元素和目标值
if value == target:
return index # 找到目标,立即返回索引
# 遍历完所有元素都没找到
return -1
if __name__ == '__main__':
test_list = [12, 5, 8, 21, 3, 19, 7]
# 查找存在的元素
target1 = 21
result1 = sequential_search(test_list, target1)
if result1 != -1:
print(f"元素 {target1} 找到,索引为:{result1}")
else:
print(f"元素 {target1} 未找到")
# 查找不存在的元素
target2 = 100
result2 = sequential_search(test_list, target2)
if result2 != -1:
print(f"元素 {target2} 找到,索引为:{result2}")
else:
print(f"元素 {target2} 未找到")运行结果:
元素 21 找到,索引为:3
元素 100 未找到