线性搜索基本上是一个 **序列搜索算法。
在这个算法中,关键元素在给定的输入(/社区/教程/arrays-in-c)中以连续顺序搜索。
如果在输入数组中找到关键元素,则返回该元素。
线性搜索算法
线性_搜索( Array X, 值 i)
- 设置 j 到 1
- 如果 j > n,跳到步骤 7
- 如果 X[j] == i,跳到步骤 6
- 然后增加 j 到 1 i.e. j = j+1
- 返回步骤 2
- 显示在特定索引 i 找到的元素 i,然后跳到步骤 8
- **显示元素在输入元素组中未找到。
线性搜索的伪代码
1procedure LINEAR_SEARCH (array, key)
2
3 for each item in the array
4 if match element == key
5 return element's index
6 end if
7 end for
8
9end procedure
C 中的线性搜索
- 首先,我们需要提及或接受从用户那里搜索的元素
- 然后,我们创建一个为循环,并以连续的方式开始搜索元素
- 一旦编译器遇到一个匹配,即数组[element] ==关键值,返回元素及其在数组中的位置
- 如果没有找到匹配输入的值,它返回 -1.
1#include <stdio.h>
2
3int LINEAR_SEARCH(int inp_arr[], int size, int val)
4{
5
6 for (int i = 0; i < size; i++)
7 if (inp_arr[i] == val)
8 return i;
9 return -1;
10}
11
12int main(void)
13{
14 int arr[] = { 10, 20, 30, 40, 50, 100, 0 };
15 int key = 100;
16 int size = 10;
17 int res = LINEAR_SEARCH(arr, size, key);
18 if (res == -1)
19 printf("ELEMENT NOT FOUND!!");
20 else
21 printf("Item is present at index %d", res);
22
23 return 0;
24}
出发点:**
1Item is present at index 5
线性搜索的时间复杂性
最好的复杂性是 O(1),如果元素在循环的第一个迭代中找到。
最糟糕的时间复杂性是O(n),如果搜索元素在数组的末尾,只要数组的大小为n。
结论
因此,在本文中,我们已经理解并实施了线性搜索算法。