顺序查找
顺序查找
简介
- 顺序查找(也称为线性查找)是一种简单直观的搜索算法。
- 按照顺序逐个比较列表或数组中的元素,直到找到目标元素或搜索完整个列表。
应用场景
- 数据集比较小,无需使用复杂的算法。
- 数据集没有排序,不能使用二分查找等基于有序数据集的算法。
- 需要在数据集中查找元素的位置。
实现思路
Python 版本
def sequential_search(arr, target):
"""
顺序查找函数
Args:
arr: 待查找的数组
target: 目标元素
Returns:
目标元素在数组中的位置,如果未找到则返回 -1
"""
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
# 不存在返回-1
def test_sequential_search_not_exist():
assert sequential_search([1, 3, 4, 5, 7, 8], "a") == -1
# 存在返回对应数据的索引
def test_sequential_search():
assert sequential_search([1, 3, 4, 5, 7, 8], 1) == 0
Java 版本
实现算法:
public class Search {
public int sequential(int[] nums, int target){
for (int i = 0; i < nums.length; i++) {
if (nums[i] == target) {
return i; // 如果找到目标元素,则返回其下标
}
}
return -1; // 如果没有找到,则返回-1
}
}
测试用例为:
class SearchTest {
@Test
public void testSeq(){
Search search = new Search();
int[] nums = new int[] {1,2,3,4,5,6,7};
// # 存在返回对应数据的索引
assertEquals(2, search.sequential(nums, 3));
// # 不存在返回-1
assertEquals(-1, search.sequential(nums, 9));
}
}