何时使用线性搜索算法?
- 当处理一个小数据集时。
- 当搜索存储在连续内存中的数据集时。
线性搜索算法在什么情况下优于其他搜索算法?
当列表或数组未排序时,或者当输入的大小相对较小时,首选线性搜索算法。它易于实现,并且不需要数据按任何特定顺序排列。
以下是线性搜索算法的实现:
C++
#include <iostream>
#include <vector>
using namespace std;int search(vector<int>& arr, int x) {for (int i = 0; i < arr.size(); i++){if (arr[i] == x){return i;}}return -1;
}int main() {vector<int> arr = {3, 5, 7, 12 ,22, 56, 66};int x = 56;int res = search(arr, x);if (res == -1){cout << "数组中不存在元素";}else{cout << "数字存在索引是 " << res;}return 0;
}
输出
数字存在索引是 5
C
#include <stdio.h>int search(int arr[], int N, int x)
{for (int i = 0; i < N; i++)if (arr[i] == x)return i;return -1;
}int main(void)
{int arr[] = arr = {3, 5, 7, 12 ,22, 56, 66};int x = 56;int N = sizeof(arr) / sizeof(arr[0]);int result = search(arr, N, x);(result == -1)? printf("数组中不存在元素"): printf("数字存在索引是 %d", result);return 0;
}
输出
数字存在索引是 5
Java
import java.io.*;class GFG {public static int search(int arr[], int N, int x){for (int i = 0; i < N; i++) {if (arr[i] == x)return i;}return -1;}public static void main(String args[]){int arr = {3, 5, 7, 12 ,22, 56, 66};int x = 56;int result = search(arr, arr.length, x);if (result == -1)System.out.print("数组中不存在元素");elseSystem.out.print("数字存在索引是 "+ result);}
}
输出
数字存在索引是 5
python
def search(arr, N, x):for i in range(0, N):if (arr[i] == x):return ireturn -1if __name__ == "__main__":arr = {3, 5, 7, 12 ,22, 56, 66}x = 56N = len(arr)result = search(arr, N, x)if(result == -1):print("数组中不存在元素")else:print("数字存在索引是", result)
输出
数字存在索引是 5
C#
using System;class GFG {public static int search(int[] arr, int N, int x){for (int i = 0; i < N; i++) {if (arr[i] == x)return i;}return -1;}public static void Main(){int[] arr = {3, 5, 7, 12 ,22, 56, 66};int x = 56;int result = search(arr, arr.Length, x);if (result == -1)Console.WriteLine("数组中不存在元素");elseConsole.WriteLine("数字存在索引是 "+ result);}
}
输出
数字存在索引是 5
JavaScript
function search(arr, n, x)
{for (let i = 0; i < n; i++)if (arr[i] == x)return i;return -1;
}let arr = {3, 5, 7, 12 ,22, 56, 66};let x = 56;let n = arr.length;let result = search(arr, n, x);(result == -1)? console.log("数组中不存在元素"): console.log("数字存在索引是 " + result);
输出
数字存在索引是 5
PHP
<?phpfunction search($arr, $n, $x)
{for($i = 0; $i < $n; $i++) {if($arr[$i] == $x)return $i;}return -1;
}$arr = array(3, 5, 7, 12 ,22, 56, 66);
$x = 56;$result = search($arr, sizeof($arr), $x);
if($result == -1)echo "数组中不存在元素";
elseecho "数字存在索引是 " ,$result;
?>
输出
数字存在索引是 5