# 顺序/线性查找算法

基本思想:逐一比较数列中的值,找到则返回。

很简单,这里给一个需求:

有一个数列:{1,8, 10, 89, 1000, 1234},判断数列中是否包含此名称(顺序查找),要求:如果找到,则输出找到,并给出下标值

下面是代码实现:

package cn.mrcode.study.dsalgtutorialdemo.datastructure.search;

import org.junit.Test;

/**
 * 线性查找
 */
public class SeqSearchTest {
    @Test
    public void seqSearchTest() {
        int[] arr = {1, 8, 10, 89, 1000, 1234};
        int i = seqSearch(arr, 1000);
        System.out.println("查找目标值 1000:" + (i == -1 ? "未找到" : "已找到,下标为 " + i));
        i = seqSearch(arr, -990);
        System.out.println("查找目标值 -990:" + (i == -1 ? "未找到" : "已找到,下标为 " + i));
    }

    /**
     * 实现的线性查找法是找到首个出现的位置
     *
     * @param arr
     * @param value
     * @return
     */
    public int seqSearch(int[] arr, int value) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == value) {
                return i;
            }
        }
        return -1;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

测试输出

查找目标值 1000:已找到,下标为 4
查找目标值 -990:未找到
1
2