目录

线性搜索算法

线性搜索算法

何时使用线性搜索算法

  • 当处理一个小数据集时。
  • 当搜索存储在连续内存中的数据集时。

线性搜索算法在什么情况下优于其他搜索算法?

当列表或数组未排序时,或者当输入的大小相对较小时,首选线性搜索算法。它易于实现,并且不需要数据按任何特定顺序排列。

以下是线性搜索算法的实现:

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(
                "数组中不存在元素");
        else
            System.out.print("数字存在索引是 "
                             + result);
    }
}

输出

数字存在索引是 5

python



def search(arr, N, x):

    for i in range(0, N):
        if (arr[i] == x):
            return i
    return -1


if __name__ == "__main__":
    arr = {3, 5, 7, 12 ,22, 56, 66}
    x = 56
    N = 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(
                "数组中不存在元素");
        else
            Console.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

<?php

function 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 "数组中不存在元素";
else
    echo "数字存在索引是 " ,
                                 $result;
?>

输出

数字存在索引是 5