原文: https://www.programiz.com/dsa/linear-search

在本教程中,您将学习线性搜索。 此外,您还将找到线性搜索 C,C++ ,Java 和 Python 的工作示例。

线性搜索是最简单的搜索算法,可以按顺序搜索列表中的元素。 我们从一端开始,检查每个元素,直到找不到所需的元素。


线性搜索如何工作?

按照以下步骤在下面的列表中搜索元素k = 1

线性搜索 - 图1

要搜索的数组

  1. 从第一个元素开始,将k与每个元素x进行比较。
    线性搜索 - 图2
    与每个元素比较

  2. 如果为x == k,则返回索引。 找到
    线性搜索 - 图3
    元素

  3. 否则,返回"not found"


线性搜索算法

  1. LinearSearch(array, key)
  2. for each item in the array
  3. if item == value
  4. return its index

Python,Java 和 C/C++ 示例

  1. # Linear Search in Python
  2. def linearSearch(array, n, x):
  3. # Going through array sequencially
  4. for i in range(0, n):
  5. if (array[i] == x):
  6. return i
  7. return -1
  8. array = [2, 4, 0, 1, 9]
  9. x = 1
  10. n = len(array)
  11. result = linearSearch(array, n, x)
  12. if(result == -1):
  13. print("Element not found")
  14. else:
  15. print("Element found at index: ", result)
  1. // Linear Search in Java
  2. class LinearSearch {
  3. public static int linearSearch(int array[], int x) {
  4. int n = array.length;
  5. // Going through array sequencially
  6. for (int i = 0; i < n; i++) {
  7. if (array[i] == x)
  8. return i;
  9. }
  10. return -1;
  11. }
  12. public static void main(String args[]) {
  13. int array[] = { 2, 4, 0, 1, 9 };
  14. int x = 1;
  15. int result = linearSearch(array, x);
  16. if (result == -1)
  17. System.out.print("Element not found");
  18. else
  19. System.out.print("Element found at index: " + result);
  20. }
  21. }
  1. // Linear Search in C
  2. #include <stdio.h>
  3. int search(int array[], int n, int x) {
  4. // Going through array sequencially
  5. for (int i = 0; i < n; i++)
  6. if (array[i] == x)
  7. return i;
  8. return -1;
  9. }
  10. int main() {
  11. int array[] = {2, 4, 0, 1, 9};
  12. int x = 1;
  13. int n = sizeof(array) / sizeof(array[0]);
  14. int result = search(array, n, x);
  15. (result == -1) ? printf("Element not found") : printf("Element found at index: %d", result);
  16. }
// Linear Search in C++

#include <iostream>
using namespace std;

int search(int array[], int n, int x) {

  // Going through array sequencially
  for (int i = 0; i < n; i++)
    if (array[i] == x)
      return i;
  return -1;
}

int main() {
  int array[] = {2, 4, 0, 1, 9};
  int x = 1;
  int n = sizeof(array) / sizeof(array[0]);

  int result = search(array, n, x);

  (result == -1) ? cout << "Element not found" : cout << "Element found at index: " << result;
}

线性搜索的复杂度

时间复杂度O(n)

空间复杂度O(1)


线性搜索应用

  1. 用于较小数组中的搜索操作(< 100个项目)。