PHP 线性搜索算法

        线性搜索被定义为一种顺序搜索算法,从一端开始,遍历列表中的每个元素,直到找到所需的元素,否则搜索将继续,直到数据集的末尾。 

线性搜索算法

线性搜索算法如何工作?
在线性搜索算法中:
        1、每个元素都被视为该键的潜在匹配项并进行相同检查。
        2、如果找到任何元素等于该键,则搜索成功并返回该元素的索引。
        3、如果没有找到与键相等的元素,则搜索结果为“未找到匹配项”。
例如:考虑数组arr[] = {10, 50, 30, 70, 80, 20, 90, 40}且key = 30
步骤1:从第一个元素(索引0)开始,将key与每个元素(arr[i])进行比较。

        将 key 与第一个元素 arr[0] 进行比较。由于不相等,迭代器将移动到下一个元素作为潜在的匹配项。

将 key 与 arr[0] 进行比较

将 key 与下一个元素 arr[1] 进行比较。由于不相等,迭代器将移动到下一个元素作为潜在的匹配项。 

将 key 与 arr[1] 进行比较

步骤2:现在,当将arr[2]与key进行比较时,值匹配。因此,线性搜索算法将产生一条成功消息,并在找到 key 时返回元素的索引(此处为 2)。 

将 key 与 arr[2] 进行比较

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

<?php
// PHP code for linearly search x in arr[].
 
function search($arr, $n, $x)
{
    for($i = 0; $i < $n; $i++) {
        if($arr[$i] == $x)
            return $i;
    }
    return -1;
}
 
// Driver Code
$arr = array(2, 3, 4, 10, 40); 
$x = 10;
 
// Function call
$result = search($arr, sizeof($arr), $x);
if($result == -1)
    echo "Element is not present in array";
else
    echo "Element is present at index " ,
                                 $result;
 
// This code is contributed
// by jit_t
?> 

输出
元素出现在索引 3 处

线性搜索的复杂度分析:
时间复杂度:
最佳情况:在最好的情况下,键可能出现在第一个索引处。所以最好的情况复杂度是 O(1)
最坏的情况:在最坏的情况下,键可能出现在最后一个索引处,即与列表中开始搜索的末尾相反的位置。因此,最坏情况的复杂度是 O(N),其中 N 是列表的大小。
平均情况: O(N)
辅助空间: O(1),因为除了迭代列表的变量之外,没有使用其他变量。 

线性搜索的优点:
        1、无论数组是否已排序,都可以使用线性搜索。它可以用于任何数据类型的数组。
        2、不需要任何额外的内存。
        3、它是一种非常适合小型数据集的算法。

线性搜索的缺点:
        线性搜索的时间复杂度为 O(N),这反过来又使得大型数据集的搜索速度变慢。
不适合大型阵列。

什么时候使用线性搜索?
        1、当我们处理小数据集时。
        2、当您搜索存储在连续内存中的数据集时。 

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

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

相关文章

修复ElementUI中el-select与el-option无法通过v-model实现数据双向绑定的问题

1. 问题描述 需求&#xff1a;在使用ElementUI时&#xff0c;通过el-select和el-option标签实现下拉列表功能&#xff0c;当el-option中的选项被选中时&#xff0c;被选中的选项可以正确回显到已选择的列表中。 对于上面的下拉列表&#xff0c;当我们选中“超级管理员”的选项…

《科学之友》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答&#xff1a;问&#xff1a;《科学之友》是什么级别的期刊呢&#xff1f; 答&#xff1a;省级&#xff1b;主管单位&#xff1a;山西省科学技术协会&#xff1b;主办单位&#xff1a;山西科技新闻出版传媒集团有限责任公司 问&#xff1a;《科学之友》是正规期刊吗&a…

深度揭秘HW中的灰色技术(盗号,个人实时定位,远程监听)

xss漏洞&#xff1a;是数量最多的漏洞 cross-site scripting 跨站脚本攻击 1.反射型xss&#xff1a;代码存在于网址中&#xff0c;将存在恶意代码的链接发给用户&#xff0c;点击后才能攻击成功实施。 2.存储型xss&#xff1a;指Web应用程序会将用户输入的数据信息保持在服务…

网络管理基础

Linux网络管理 1.网络管理概念 网络接口和名称 &#xff1a;网卡 ip地址 网关 主机名称 路由2.管理工具 net-tools: #安装包 ifconfig netstat 准备要废掉了。iproute: #安装包 ip #提供ip命令3.认识网卡 lo网卡 :本地回环网卡&#xff0c;本机上的服务自己访问自…

C语言【典型算法编程题】总结

以下最全总结! 一,分支结构 1,if 编写程序,从键盘上输入三角形的三个边长(实数),判断这三个边能否构成三角形(构成三角形的条件为:任意两边之和大于第三边),如果能构成三角形,则计算三角形的面积并输出(保留2位小数);如果不能构成三角形,则输出“Flase”字符…

3.Windows下安装MongoDB和Compass教程

Windows下安装MongoDB 总体体验下来&#xff0c;&#xff0c;要比MySQL的安装简单了许多&#xff0c;没有过多的配置&#xff0c;直接就上手了&#xff01; 1、下载 进入官方的下载页面https://www.mongodb.com/try/download/community&#xff0c;如下选择&#xff0c;我选…

Hadoop学习1:概述、单体搭建、伪分布式搭建

文章目录 概述基础知识Hadoop组件构成Hadoop配置文件 环境准备配置Hadoop配置下载配置环境变量 Hadoop运行模式Standalone Operation&#xff08;本地&#xff09;官方DemoWordCount单词统计Demo Pseudo-Distributed Operation&#xff08;伪分布式模式&#xff09;配置修改启动…

江科大stm32学习笔记【6-2】——定时器定时中断定时器外部时钟

一.定时器定时中断 1.原理 2.硬件 3.程序 此时CK_PSC72M&#xff0c;定时1s&#xff0c;也就是定时频率为1Hz&#xff0c;所以可以PSC7200-1,ARR10000-1。 Timer.c: #include "stm32f10x.h" // Device headerextern uint16_t Num;//声明跨文件的…

【SQL Server】实验四 数据更新

1 实验目的 掌握SQL数据更新语句的基本使用方法&#xff0c;如UPDATE、DELETE、INSERT。掌握更新语句条件中的嵌套查询使用方法。 2 实验内容 2.1 掌握SQL更新语句的基本使用方法 INSERT基本语句。UPDATE基本语句。DELETE基本语句。 2.2 掌握SQL更新语句的高级使用方法 …

AXI CANFD MicroBlaze 测试笔记

文章目录 前言测试用的硬件连接Vivado 配置Vitis MicroBlaze CANFD 代码测试代码测试截图Github Link 前言 官网: CAN with Flexible Data Rate (CAN FD) (xilinx.com) 特征: 支持8Mb/s的CANFD多达 3 个数据位发送器延迟补偿(TDC, transmitter delay compensation)32-deep T…

长江存储Nand闪存芯片和SSD解决方案

长江存储科技有限责任公司2016年7月成立于武汉&#xff0c; 是一家专注于3D NAND闪存设计制造一体化的IDM集成电路企业&#xff0c;同时也提供完整的存储器解决方案。长江存储为全球合作伙伴供应3D NAND闪存晶圆及颗粒&#xff0c; 嵌入式存储芯片以及消费级、企业级固态硬盘等…

报Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String错误

在springboot中使用Mybatis出现Invalid value type for attribute factoryBeanObjectType: java.lang.String 1、没有使用mybatis 检查pom文件里面的mybatis 可能是缺少这个依赖&#xff0c;或者版本过低 重新导入依赖 <dependency><groupId>org.mybatis.spri…