线性搜索是在一个元素列表中寻找一个给定元素的搜索算法之一。这种算法按顺序遍历列表中的每一个元素,直到找到一个匹配的元素或直到列表的末尾。
它最适合于小型集合,当我们必须在一个元素数量较少的集合中搜索元素时。对于大的数组或集合,它不是一个好的搜索算法,在大多数情况下可能表现较差。
让我们从了解线性搜索的基础知识开始。
1.1.线性搜索是如何工作的?
在线性搜索中,我们按顺序遍历数组/集合。我们将每个元素与给定的搜索元素进行比较,如下图所示。
如果我们找到一个匹配,我们将停止遍历;否则,我们将遍历整个元素列表。

在上面的例子中,我们有一些元素3,4,1,7,5 ,我们正在搜索值为7 的元素。我们将开始遍历并比较每个元素,首先是3与7,4与7,1与7,以及7与7。
一旦发现匹配,我们将停止遍历,并返回找到匹配后的索引。
1.2.操作步骤
LinearSearch(array, element)
for each item in the array
if item == value
return its index
- 声明并初始化一个数组和搜索元素。
- 遍历数组直到找到搜索元素。
- 如果给定的搜索元素被找到,返回true或该元素的索引。
- 如果在数组中没有找到给定的搜索元素,返回false。
让我们通过一个例子来进一步了解。
2.在Java中实现线性搜索
在下面的例子中,我们正在。
- 声明并初始化一个元素数组
arr。 - 在给定的数组
arr中搜索元素7,我们将首先把它分配给变量ele。 - 得到数组的长度并将其分配给变量
n。我们将使用这个长度来运行for循环来遍历数组中的所有元素arr。 - 定义
lnrSearch()方法,该方法接受array,length of the array, 和search element作为参数,并返回一个适当的信息。 - 在for循环中检查当前元素是否与参数元素相等。如果匹配,那么我们返回该元素被找到。如果在遍历整个数组后仍未找到该元素,我们将返回该元素在数组中未被找到。
class LinearSearch {
public static void main( String args[] ) {
//given an array of elements
int[] arr = { 3, 4, 1, 7, 5 };
//given search element
int ele = 7;
//get length of the array
int n = arr.length;
//call lnrSearch method and display returned result
System.out.println(lnrSearch(arr, n, ele));
}
//method to check for a element using linear search
static String lnrSearch(int arr[], int n, int ele){
for (int i = 0; i < n; i++) {
//checks for matching element
if (arr[i] == ele)
return "Given element is found at the index "+ i;
}
return "Given element is not found in the array.";
}
}
3.时间和空间复杂度
3.1.时间复杂度
- 如果元素在索引
0,线性搜索算法的时间复杂度为O(1)。这是它最好的情况。 - 在其他情况下,它需要O(n)的时间复杂度,其中n是元素在数组中的位置。
- 在最坏的情况下,时间复杂度将是O(length),其中length是一个数组的大小。这是一个最坏的 情况。
3.2.空间复杂度
由于我们没有使用额外的空间。线性搜索算法需要O(1) 空间复杂度。
4.总结
在本教程中,我们学习了线性搜索算法,并通过一个例子理解了它。我们还了解了它在时间和空间复杂度方面的最佳和最差情况。
祝你学习愉快!!