2

说,我试图在一个数组中找到最大的元素,我写了一些代码如下。

public class LargestElement
{
    public static void main(String[] args)
    {
        int[] a = {1,2,6,4,5,4,3,1};

        int max = a[0];
        for(int i = 1;i<a.length;i++)
        {
            if(a[i] > max)
                max = a[i];
        }

        System.out.println(max);
    }
}

这叫线性搜索吗?

4

3 回答 3

10

由于该算法是在集合中寻找最高值,因此称为线性选择算法,而不是线性搜索算法。这与查找特定值的搜索算法不同。

于 2015-08-26T10:24:25.330 回答
2

不,这不是线性搜索,因为您不是在此数组中查找元素,而是在此数组中查找最大值。它总是检查数组的所有元素,而线性搜索算法在找到特定值(您正在搜索的那个)时终止。然而,这个算法的复杂度确实是线性的(这里有更多关于复杂度的细节)。

引用问题中也包含的“线性搜索”标签的描述:

线性搜索或顺序搜索是一种在列表中查找特定值的方法,该方法包括检查其每个元素,一次一个并按顺序检查,直到找到所需的元素。线性搜索是最简单的搜索算法。它的最坏情况成本与列表中的元素数量成正比。

于 2015-08-26T10:24:31.387 回答
0

如果您想知道什么是线性搜索,上面的答案只是一个补充,那么它看起来像这样

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.Scanner;
class LargestElement
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);

        int ele= s.nextInt();
        int[] a = {1,2,6,4,5,4,3,1};

        for(int i = 0;i<a.length;i++)
        {
            if(a[i] ==ele)
                {
                        System.out.println("Element Found at : "+ (i+1)+" Position");
                }
        }

    }
}

它是我编辑的代码,它只是在数组中线性搜索给定值,在这种情况下,我是从控制台获取的。搜索有多种变化,例如二分搜索(用于排序数组),还有许多其他搜索算法,但最基本的一种是线性搜索。

于 2015-08-26T12:52:06.410 回答