线性搜索算法的初学者指南

452 阅读3分钟

线性搜索是在一个元素列表中寻找一个给定元素的搜索算法之一。这种算法按顺序遍历列表中的每一个元素,直到找到一个匹配的元素或直到列表的末尾。

它最适合于小型集合,当我们必须在一个元素数量较少的集合中搜索元素时。对于大的数组或集合,它不是一个好的搜索算法,在大多数情况下可能表现较差。

让我们从了解线性搜索的基础知识开始。

1.1.线性搜索是如何工作的?

在线性搜索中,我们按顺序遍历数组/集合。我们将每个元素与给定的搜索元素进行比较,如下图所示。

如果我们找到一个匹配,我们将停止遍历;否则,我们将遍历整个元素列表。

在上面的例子中,我们有一些元素3,4,1,7,5 ,我们正在搜索值为7 的元素。我们将开始遍历并比较每个元素,首先是3与74与71与7,以及7与7

一旦发现匹配,我们将停止遍历,并返回找到匹配后的索引。

1.2.操作步骤

LinearSearch(array, element)
  for each item in the array
    if item == value
      return its index
  1. 声明并初始化一个数组和搜索元素
  2. 遍历数组直到找到搜索元素
  3. 如果给定的搜索元素被找到,返回true或该元素的索引。
  4. 如果在数组中没有找到给定的搜索元素,返回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.总结

在本教程中,我们学习了线性搜索算法,并通过一个例子理解了它。我们还了解了它在时间和空间复杂度方面的最佳和最差情况。

祝你学习愉快!!