搜索算法旨在检查元素或从存储该元素的任何数据结构中检索元素。根据搜索操作的类型,这些算法通常分为两类:
- 顺序搜索:在此顺序搜索列表或数组,并检查每个元素。例如:线性搜索。
- 间隔搜索:这些算法是专门为在排序的数据结构中搜索而设计的。这些类型的搜索算法比线性搜索有效得多,因为它们反复瞄准搜索结构的中心并将搜索空间分成两半。例如:二进制搜索。
线性搜索:想法是遍历给定的数组arr []并找到存在该元素的索引。步骤如下:
- 令要搜索的元素为x 。
- 从arr []的最左边的元素开始,然后将x与arr []的每个元素一一比较。
- 如果x与一个元素匹配,则返回该索引。
- 如果x与任何元素都不匹配,则返回-1。
下面是Java顺序搜索的实现:
Java
// Java program to implement Linear Search
class GFG {
// Function for linear search
public static int search(int arr[], int x)
{
int n = arr.length;
// Traverse array arr[]
for (int i = 0; i < n; i++) {
// If element found then
// return that index
if (arr[i] == x)
return i;
}
return -1;
}
// Driver Code
public static void main(String args[])
{
// Given arr[]
int arr[] = { 2, 3, 4, 10, 40 };
// Element to search
int x = 10;
// Function Call
int result = search(arr, x);
if (result == -1)
System.out.print(
"Element is not present in array");
else
System.out.print("Element is present"
+ " at index "
+ result);
}
}
输出:
Element is present at index 3
时间复杂度: O(N)
辅助空间: O(1)