# 顺序/线性查找算法
基本思想:逐一比较数列中的值,找到则返回。
很简单,这里给一个需求:
有一个数列:{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
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
2