顺序查找算法
什么是顺序查找算法
顺序查找算法是一种最基础、最简单的查找算法,也被称为线性查找算法,其本质是在一个数据集中顺序查找目标值,以确定目标值在序列中是否存在。
顺序查找算法如何实现
顺序查找算法的实现非常简单,步骤如下:
- 从序列的第一个元素开始遍历,逐个和目标值进行比较
- 如果找到目标值,返回该元素在序列中的下标
- 如果遍历完整个序列依然没有找到目标值,返回-1或者抛出异常等标识未找到
示例代码如下:
def sequential_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
顺序查找算法的优缺点
优点
- 算法简单易理解易实现
- 数据集的存储方式可以是数组、链表、文本等任意可线性访问的数据结构,因此适用范围广泛
- 对于数据集比较小的情况表现较好
缺点
- 在数据集比较大时,效率低下,时间复杂度为O(n)
- 无法利用数据集的任何特殊结构或者有序性
顺序查找算法的使用方法
顺序查找算法可以应用于各种数据集合的查找,包括但不限于数组、链表、文本等。下面介绍使用顺序查找算法解决两个问题的示例。
示例一:从一个整数数组中查找某个整数是否存在
例如,给定一个有序整数数组[1, 5, 9, 11, 15, 19, 22, 25],我们需要查找数字11是否在其中。可以用如下代码实现:
arr = [1, 5, 9, 11, 15, 19, 22, 25]
target = 11
index = sequential_search(arr, target)
if index == -1:
print("Target is not found")
else:
print("Target is at index: ", index)
输出结果:
Target is at index: 3
示例二:从一个文本文件中查找某个字符串是否存在
例如,现在有一个文本文件test.txt,内容如下:
This is a test file for sequential search algorithm.
Sequential search is very simple but may not be very efficient.
我们需要查找文本中是否包含字符串”search”。可以用如下代码实现:
with open("test.txt", "r") as f:
lines = f.readlines()
target = "search"
for i in range(len(lines)):
if target in lines[i]:
print("Target is found in line: ", i+1)
break
else:
print("Target is not found in the file")
输出结果:
Target is found in line: 1