顺序查找算法详细讲解
顺序查找算法也叫线性查找算法,是一种基本的查找算法,主要用于在一个无序的集合中查找某个元素。顺序查找算法逐一扫描整个集合,直至找到目标元素为止。
算法过程
顺序查找算法的核心思想是遍历整个集合,查找目标元素。它的具体操作步骤如下:
- 遍历整个集合,从第一个元素开始逐一扫描
- 如果当前元素等于目标元素,则直接返回该元素的下标
- 如果遍历至集合末尾仍未找到目标元素,则返回查找失败的标记
代码实现
以下是一个简单的顺序查找算法的实现,假设要查找的值为 target
,待查找的集合为 arr
:
/**
* 顺序查找算法
* @param arr 待查找的集合
* @param target 待查找的目标元素
* @return 若找到目标元素,则返回其下标;否则返回 -1
*/
public static int sequentialSearch(int[] arr, int target) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
示例说明
以下是两个使用顺序查找算法的示例:
示例 1
假设有一个长度为 10 的整数型数组 arr
,其中包含以下元素:[2, 5, 1, 8, 7, 6, 3, 9, 4, 0]。现在要查找元素 7 是否在数组中,可以使用顺序查找算法实现。
int[] arr = {2, 5, 1, 8, 7, 6, 3, 9, 4, 0};
int target = 7;
int index = sequentialSearch(arr, target);
if (index != -1) {
System.out.println("目标元素在集合中,下标为 " + index);
} else {
System.out.println("目标元素不在集合中");
}
上述代码输出结果为:“目标元素在集合中,下标为 4”。
示例 2
假设有一个长度为 5 的字符串数组 arr
,其中包含以下元素:[“apple”, “orange”, “banana”, “mango”, “watermelon”]。现在要查找元素 “grape” 是否在数组中,同样可以使用顺序查找算法实现。
String[] arr = {"apple", "orange", "banana", "mango", "watermelon"};
String target = "grape";
int index = sequentialSearch(arr, target);
if (index != -1) {
System.out.println("目标元素在集合中,下标为 " + index);
} else {
System.out.println("目标元素不在集合中");
}
上述代码输出结果为:“目标元素不在集合中”。