线性搜索或顺序搜索算法在Java中如何工作? 示例教程

大家好,我之前谈到了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码。 在那篇文章中,有人问我是否还存在其他搜索算法? 如果数组中的元素未排序,又如何使用二进制搜索算法,该如何搜索呢? 为了回答他的问题,我提到了线性搜索算法,它是二进制搜索的前身。 通常,在二进制搜索算法之前进行讲授,因为二进制搜索比线性搜索快 。 但是,没关系,您仍然可以学习此有用的算法来搜索数组或链接列表中的项目。
线性搜索或顺序搜索是一种用于在列表中查找特定值的方法,该方法包括以下步骤:一次检查每个元素,然后依次检查直到找到所需的元素。

线性搜索算法是最简单的。 对于n个项目的列表,最好的情况是值等于列表的第一个元素,在这种情况下,只需要一个比较即可。 最坏的情况是该值不在列表中(或在列表末尾仅出现一次),在这种情况下,需要进行n次比较。

对于线性搜索,最坏的性能情况是它必须遍历整个集合,这是因为该项目是最后一个项目,或者因为找不到该项目。

换句话说,如果您的集合中有N个项目,则找到主题的最坏情况是N次迭代。 用大O表示法是O(N)。 搜索速度随着集合中项目的数量线性增长。 与二进制搜索算法不同,线性搜索不需要对集合进行排序。

顺便说一句,如果您不熟悉像这样的基本数据结构和算法,最好先学习一门合适的数据结构和算法课程,例如“ 数据结构和算法:使用Java深入学习” 这是学习Java编程语言的基本数据结构和算法的综合资源。 它的价格也非常实惠,您只需在Udemy的月度销售中花10美元即可购买。

这是我们的示例程序,用于在Java中实现顺序搜索算法。 这是不言自明的,但是如果您对理解代码的任何部分有任何疑问,请大喊大叫,我很乐意清除您的任何疑问。

您还可以阅读《 Grokking算法 》一书,这是我最喜欢的一本书,旨在学习基础数据结构和算法。 它有一整章关于线性搜索和二进制搜索,下面是一张图,它很好地解释了线性搜索和二进制搜索算法之间的区别。

您会看到线性搜索算法的原因,因为随着数组大小或元素数量的增加,搜索速度越来越慢。

 import java.util.Arrays;  import java.util.Scanner;   /**  * Java program to implement linear search algorithm in Java. It's also known as  * sequential search, because its sequentially search array for desired element.  * It's best case performance is O(1), when number is located at first index of  * array, in worst case it can take upto N array index access and N comparison.  * In Big O notation, time complexity of linear search is O(n), where n is  * number of elements in array.  *  * @author Javin  */  public class LinearSearchDemo {  
     public static void main(String args[]) {  
         int [] primes = { 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 };  
         for ( int number : primes) { 
             int index = linearSearch(primes, number); 
             if (index != - 1 ) { 
                 System.out.printf( "'%d' is found at index '%d' %n" , number, 
                          index); 
             } else { 
                 System.out.printf( "'%d' not found in array %n" , number, 
                      Arrays.toString(primes)); 
             } 
         }  
     }  
     /** 
      * Search a number in array using linear search algorithm. It's one of the 
      * simplest algorithm in programming world, which just require iterating 
      * over array and comparing each element with desired one. Once found you 
      * break the loop and return index of element. 
      * 
      * @param array 
      * @param number 
      * @return index of number in array, or -1 if not found 
      */ 
     public static int linearSearch( int [] array, int number) { 
         for ( int i = 0 ; i < array.length; i++) { 
             if (array[i] == number) { 
                 return i; 
             } 
         } 
         return - 1 ; // Number not found in array 
     }   }   Output:  is found at index '0' is found at index '2' '0'  '3' is found at index '1'  is found at index '2' is found at index '5' '2'  is found at index '3' is found at index '7' '3'  is found at index '4' is found at index '11' '4'  is found at index '12' is found at index '41' '12'  is found at index '13' is found at index '43' '13'  is found at index '14' is found at index '47' '14' 

就是这样
如何用Java实现线性搜索算法 。 它是您在计算机科学课上应学习的首批搜索算法之一。 老师和教授接下来解释二进制搜索,但是您已经了解了。 没关系,我们有很多排序算法供您参考,下面的文章将为您提供帮助。

如果您准备面试并提高您的数据结构和算法技能,则还可以查看以下资源以进行下一个准备:

进阶学习
11个基本编码面试问题掌握编码面试:数据结构和算法 摸索编码面试:编码问题的模式

其他
小号
您可能喜欢的搜索和排序算法教程

  • 如何在Java中实现插入排序算法? ( 教程
  • 如何在Java中将Quicksort算法应用到位? ( 教程
  • 如何在Java中实现冒泡排序算法? ( 教程
  • 比较和非比较排序算法之间的区别? ( 回答
  • 如何在Java中应用存储桶排序? ( 教程
  • 如何实现无递归的Quicksort算法? ( 教程
  • 如何在Java中执行二进制搜索算法? ( 教程
  • 如何在总和等于k的数组中找到所有对(
  • 如何从Java中的数组中删除重复项? ( 解决方案
  • 如何在不排序的情况下找到数组中最高有效和最小的数字? ( 解决方案
  • 如何从Java中未排序的数组中查找重复项? ( 解决方案
  • 如何在排序数组中找到一个缺失的数字? ( 解决方案
  • 如何从包含1到100的数组中查找缺失值? ( 解决方案
  • 如何计算Java中给定的二叉树中叶节点的数量? ( 解决方案
  • 递归有序遍历算法( 解决方案
  • 面试中的50多种数据结构和算法问题( 问题
  • 我最喜欢的免费课程,用于深入学习数据结构( FreeCodeCamp
  • 如何从Java中的数组中删除元素? ( 解决方案
  • 如何检查数组是否包含特定值? ( 解决方案
  • 二叉树中的迭代PreOrder遍历( 解决方案
  • 面向程序员的10项免费数据结构和算法课程( 课程
  • 来自面试的100多种数据结构编码问题( 问题

感谢您阅读本文。 如果您喜欢这篇文章,请与您的朋友和同事分享。 如果您有任何问题或反馈,请留下笔记。

PS –如果您正在寻找一些免费算法课程以增进您对数据结构和算法的理解,那么您还应该检查
关于Udemy的易于高级数据结构课程。 它是由Google软件工程师和算法专家撰写的,完全免费。

翻译自: https://www.javacodegeeks.com/2020/02/how-linear-search-or-sequential-search-algorithms-works-in-java-example-tutorial.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值