【问题标题】:is this algorithm called linear search?这个算法叫线性搜索吗?
【发布时间】:2015-11-20 08:00:36
【问题描述】:

比方说,我想找一个数组中最大的元素,我写了一些代码如下。

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);
    }
}

这叫线性搜索吗?

【问题讨论】:

  • 不.. 你不是在搜索任何东西。这个算法可以称为 - 最大的数字搜索
  • 是的。循环将运行固定的时间。
  • @MuratK。并非所有在固定时间内运行的算法都称为“线性搜索”。

标签: java algorithm search linear-search


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      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");
                      }
              }
      
          }
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-17
        • 2021-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多