Skip to content

顺序查找

顺序查找

简介

  • 顺序查找(也称为线性查找)是一种简单直观的搜索算法。
  • 按照顺序逐个比较列表或数组中的元素,直到找到目标元素或搜索完整个列表。

应用场景

  1. 数据集比较小,无需使用复杂的算法。
  2. 数据集没有排序,不能使用二分查找等基于有序数据集的算法。
  3. 需要在数据集中查找元素的位置。

实现思路

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));
    }
}

相关题目