线性搜索或顺序搜索算法在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

junit规则_JUnit规则

junit规则介绍 在本文中&#xff0c;我想展示一个示例&#xff0c;说明如何使用JUnit Rule简化测试。 最近&#xff0c;我继承了一个相当复杂的系统&#xff0c;并未对所有内容进行测试。 甚至经过测试的代码也很复杂。 通常&#xff0c;我看到缺乏测试隔离。 &#xff08;我将…

mysql server 5.0安装教程_MySQL Server 5.0安装教程

运行MySQL Server 5.0安装程序“setup.exe”&#xff0c;出现如下界面&#xff1a;安装向导启动&#xff0c;按“Next”继续&#xff1a;选择安装类型&#xff0c;为了方便熟悉安装过程&#xff0c;我们选择“Custom”。按“Next”继续&#xff1a;在“Developer Components”上…

Kubernetes集群上的Apache Ignite和Spring第2部分:Kubernetes部署

以前&#xff0c;我们已经成功创建了第一个由Apache Ignite支持的Spring boot Application。 在此博客上&#xff0c;我们将重点介绍Kubernetes方面需要做的事情&#xff0c;以便能够启动我们的应用程序。 如先前博客所述&#xff0c;我们需要制定我们的Kubernetes RBAC策略。…

centos6.5 安装多个mysql_在centos6,5(64位)系统安装多实例mysql5.6

首先你安装个单实例的mysql试一试一 检查你电脑之前是否装了mysqlrpm -qa | grep mysql这条命令只是查看你系统是否使用过yum或者rpm包安装mysql&#xff0c;对用源码包安装的mysql是查不到的&#xff0c;所以基本用不到二 安装编译所需的包yum -y install make gcc-c cmake bi…

hibernate jpa_JPAHibernate替代方案。 如果JPA或Hibernate对于我的项目而言不够好,该怎么办?...

hibernate jpa你好&#xff01;你好吗&#xff1f; 今天我们将讨论不建议使用JPA / Hibernate的情况。 在JPA领域之外&#xff0c;我们还有哪些选择&#xff1f; 我们将谈论的是&#xff1a; JPA /Hibernate问题 解决一些JPA /Hibernate问题的方法 选择此处描述的框架的标准…

mysql中常见查询表_MySQL中常见查询

1 --1、查询“001”课程比“002”课程成绩高的所有学生的学号&#xff1b;2 SELECT a.s FROM sc a,sc b WHERE a.sb.s AND a.c1 AND b.c2 AND a.score >b.score;3 --2、查询平均成绩大于60分的同学的学号和平均成绩&#xff1b;4 SELECT student.s,avg(score) FROM student,…

约束流–没有Drools规则语言的现代Java约束

传统上&#xff0c;要使用OptaPlanner进行扩展&#xff0c;您必须学习DRL。 不再。 借助受Java 8 Streams和SQL启发的新Constraints Streams API&#xff0c;您现在可以用Java &#xff08;或Kotlin或Scala&#xff09; 编写约束&#xff0c;并且仍然可以从增量计算中受益。 在…

mysql数据库杀掉堵塞_Mysql解决USE DB堵塞详解

遇到故障&#xff0c;我们往往想的是如何解决这个故障&#xff0c;而不是从故障的根本去思考出现这个故障的原因&#xff1f;这样的结果&#xff0c;只能使我们得到了鱼&#xff0c;失去了渔。今天&#xff0c;我们就来分享一个由USE DB堵塞故障引发的思考案例。故障描述今天一…

java拦截器项目应用_使用拦截器分析Java EE应用程序的性能下降/提高

java拦截器项目应用在开发具有某些性能要求的Java EE应用程序时&#xff0c;必须在每个发行版之前验证是否满足这些要求。 您可能会想到&#xff0c;哈德森的一项工作每天晚上在某些特定的硬件平台上执行一系列测试测量。 您可以检查已实现的时间并将它们与给定的要求进行比较…

iis web.config 配置 经典模式_django部署在iis下,webconfig错误

django部署在iis下&#xff0c;webconfig错误错误原因&#xff1a;iis7以后&#xff0c;web.config管理机制更安全了默认情况下&#xff0c;会锁住配置项&#xff0c;不许修改怎么办&#xff1f;如何求解以上问题呢&#xff1f;D:django_websiteshello>%windir%C:Windows 不…

如何在Java中验证电话号码(正则表达式+ Google libphonenumber)

关于如何在不同国家&#xff08;例如美国&#xff0c;美国&#xff09;使用Java验证电话号码的快速指南。 带有正则表达式和Google libphonenumber API的示例程序。 1.简介 在本教程中&#xff0c;我们将学习如何在java中验证电话号码 。 这主要是为了验证美国和印度的国家/地…

mysql该账户已存在_mysql 查看函数的所属用户和已存在的函数

复现方式&#xff1a;Delete FROM user Where Usertest and Host%;flush privileges;修复流程&#xff1a;1.用root用户删除两个函数&#xff0c;语句分别为DROP FUNCTION IF EXISTS currval;DROP FUNCTION IF EXISTS nextval;2.然后用程序用户(sharding_slave)创建函数&#x…

joo工作流_不要错过使用jOOλ或jOOQ编写Java 8 SQL单行代码的机会

joo工作流越来越多的人通过为他们的业务采用功能性编程来赶上我们平台的最新更新。 在Data Geekery &#xff0c;我们将Java 8用于jOOQ集成测试&#xff0c;因为将新的Streams API与lambda表达式一起使用使生成临时测试数据变得非常容易。 但是&#xff0c; 我们并不认为JDK提…

session mysql登录实现_PHP+MYSQL+MYSQL+SESSION实现用户登录的实例

这是我写的用户登录界面。session_start();include(menu2.php);require(configywcl.php);//加载配置文件require(functions.php);?>请登录系统if ($username){$passwordmd5($password);$sql"select * from user where username$username and password$password";…

使用OpenSSL加密,使用Java解密,使​​用OpenSSL RSA公钥

抽象 在2017年&#xff0c;我撰写了一个由三部分组成的系列文章&#xff0c;内容涉及选择最佳的哈希和加密算法。 在对该系列进行研究时&#xff0c;我学到了很多有关哈希和加密的知识。 我学到的最重要的事情是&#xff0c;尽管我必须对如何使用最安全的算法进行自我教育&…

axture动画原型制作_Axure制作原型-基础操作

产品原型从类型可以分为手稿、线框图、低保真、高保真几种效果&#xff0c;在制作的时候分为不同场景来决定我们的输出物类型。比如在会议中为了快速的确定产品规划方向&#xff0c;迅速的记录及表达出当前灵感的碰撞&#xff0c;这个时候通常使用手稿的形式快速绘制&#xff0…

有效Java第三版的源代码已更新为使用较新的功能

那些已经阅读了有效Java 第三版的人可能知道与该书相关的源代码可以在GitHub上获得 。 jbloch / efficiency-java-3e-source-code项目拥有1700多个星星&#xff0c;截至撰写本文时&#xff0c;它已被分叉了近800次。 在有效Java的第三版中&#xff0c; Java的版本主要是JDK 8&a…

mysql 远程连接取消权限_MYSQL远程登录权限设置

Mysql默认关闭远程登录权限&#xff0c;如下操作允许用户在任意地点登录&#xff1a;1. 进入mysql&#xff0c;GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY WITH GRANT OPTION;IDENTIFIED BY后跟的是密码&#xff0c;可设为空。2. FLUSH privileges; 更新Mysql为了安…

spring和spring_Spring WebApplicationInitializer和ApplicationContextInitializer的混淆

spring和spring我偶尔会混淆这两个概念-WebApplicationInitializer和ApplicationContextInitializer&#xff0c;并希望描述它们中的每一个&#xff0c;以便为我自己澄清它们。 我以前曾在这里写过有关WebApplicationInitializer的博客。 它仅在符合Servlet 3.0规范的Servlet容…

mybatis mysql demo_SpringBoot(入门Demo,整合mybatis,连接mysql)

1.简介SpringBoot提供一种固定的、约定优于配置风格的框架&#xff0c;使开发者更快地创建基于spring的应用和程序。可以高效的创建基于Spring的应用服务(SpringBoot不是对spring功能的增强&#xff0c;而是可以更快速使用spring)。为微服务spring cloud铺路&#xff0c;可整合…