C# 线性搜索算法

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

线性搜索算法 

线性搜索算法如何工作?
在线性搜索算法中:
        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] 进行比较

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

// C# code to linearly search x in arr[].
 
using System;
 
class GFG {
    public static int search(int[] arr, int N, int x)
    {
        for (int i = 0; i < N; i++) {
            if (arr[i] == x)
                return i;
        }
        return -1;
    }
 
    // Driver's code
    public static void Main()
    {
        int[] arr = { 2, 3, 4, 10, 40 };
        int x = 10;
 
        // Function call
        int result = search(arr, arr.Length, x);
        if (result == -1)
            Console.WriteLine(
                "Element is not present in array");
        else
            Console.WriteLine("Element is present at index "
                              + result);
    }
}
 
// This code is contributed by DrRoot_ 

输出
元素出现在索引 3 处

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字信封

一、概念 数字信封是将对称密钥通过非对称加密&#xff08;即&#xff1a;有公钥和私钥两个&#xff09;的结果分发对称密钥的方法。数字信封是实现信息保密性验证的技术。 二、过程描述 在数字信封中&#xff0c;信息发送方采用对称密钥来加密信息内容&#xff0c;然后将此…

YOLOv1预测阶段后处理----Non-maximum suppression(NMS非极大值抑制)

前言&#xff1a;预了解 NMS&#xff0c;去掉冗余的框。在目标检测中&#xff0c;不论是最初的region proposal&#xff0c;还是后来的anchor box&#xff0c;不可避免的一个问题就是对于同一个物体&#xff0c;会预测出多个bounding box&#xff0c;如下左图所示。而NMS所做的…

Java 使用 EasyExcel 实现导入导出(新手篇教程)

官网镇楼↓&#xff0c;觉得我写的不好的同学可以去官网看哦 EasyExcel Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> Excel 导入 示例&…

6、Design Script之列表

Range 在DesignScript中,Range是从起点到终点的一系列数字,使用指定的步距(间距类型),并有以下的初始化方法: start..end..step; start..end..#amount; start..end..~approximate; Range可以是数字的,也可以是字母的。 字母范围因大小写而异。 开始,结束. .#数量范围(…

【软考高项】六、信息技术发展之计算机网络知识点

1、网络作用划分 个人局域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、公用网、专用网。 2、OSI七层 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 3、广域网协议类型 PPP点对点协议、ISDN综合业务数字网、xDSL(DSL数字用户线路的统称:HDSL.SDSL、M…

遗嘱消息(Will Message)介绍与示例 _ MQTT 5.0 特性详解

什么是 MQTT 遗嘱消息&#xff1f; 在现实世界中&#xff0c;一个人可以制定一份遗嘱&#xff0c;声明在他去世后应该如何分配他的财产以及应该采取什么行动。在他去世后&#xff0c;遗嘱执行人会将这份遗嘱公开&#xff0c;并执行遗嘱中的指示。 在 MQTT 中&#xff0c;客户端…

比较不错超声波清洗机有哪些?2024年口碑一绝超声波清洗机推荐

2024年&#xff0c;随着科技的不断进步和消费者需求的日益增长&#xff0c;超声波清洗机在生活中的应用变得越来越广泛。无论是珠宝首饰、眼镜、电子产品还是医疗器械&#xff0c;高效、快速、安全的清洗方式正成为人们追求的目标。超声波清洗机以其独特的清洗方式和卓越的清洗…

让数据在业务间高效流转,镜舟科技与NineData完成产品兼容互认

近日&#xff0c;镜舟科技与NineData完成产品兼容测试。在经过联合测试后&#xff0c;镜舟科技旗下产品与NineData云原生智能数据管理平台完全兼容&#xff0c;整体运行高效稳定。 镜舟科技致力于帮助中国企业构建卓越的数据分析系统&#xff0c;打造独具竞争力的“数据护城河”…

Redis 除了做缓存,还能做什么?

分布式锁&#xff1a;通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下&#xff0c;我们都是基于 Redisson 来实现分布式锁。关于 Redis 实现分布式锁的详细介绍&#xff0c;可以看这篇文章&#xff1a;分布式锁详解open in new window 。限流&#xff1a;一般是通过 …

无GPU搭建开源大模型--LLAMA2

在Grok之前,脸书就开源了LLAMA2的大模型,从第三方数据来看Grok各方面都碾压LLAMA2 但如果是初学AI,llama无疑还是一个很好的突破口,在Grok没有到来之前,就让我们先向LLAMA2开刀。 本次介绍如何在无需GPU参与的情况下,在本地部署llama2,方法来自国外大神:Georgi Gergan…

了解常用开发模型 -- 瀑布模型、螺旋模型、增量与迭代、敏捷开发

目录 瀑布模型 开发流程 开发特征 优缺点 适用场景 螺旋模型 开发流程 开发特征 优缺点 适用场景 增量与迭代开发 什么是增量开发&#xff1f;什么是迭代开发&#xff1f; 敏捷开发 什么是敏捷开发四原则&#xff08;敏捷宣言&#xff09;&#xff1f; 什么是 s…

基于微信小程序的作业管理系统的设计与实现【附项目源码】分享

基于微信小程序的作业管理系统的设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/qq_41810183/88842836 一、引言 随着移动互联网的普及和微信小程序的广泛应用&#xff0c;教育领域也在积极探索如何利用这些新技术提升教学质量和效率。本需…

工具篇--分布式定时任务springBoot--elasticjob简单使用(1)

文章目录 前言一、elasticjob 介绍&#xff1a;二、elasticjob 使用&#xff1a;2.1 部署zookeeper&#xff1a;2.2 引入库2.2 定义任务&#xff1a;2.3 任务执行&#xff1a;2.4 任务执行控制台输出&#xff1a; 三、elasticjob 启动错误&#xff1a;3.1 KeeperErrorCode Ope…

Infineon_TC264智能车代码初探及C语言深度学习(二)

本篇文章记录我在智能车竞赛中&#xff0c;对 Infineon_TC264 这款芯片的底层库函数的学习分析。通过深入地对其库函数进行分析&#xff0c;C语言深入的知识得以再次在编程中呈现和运用。故觉得很有必要在此进行记录分享一下。 目录 ​编辑 一、代码段分析 NO.1 指向结构体…

《恩爱兔》

恩爱兔 类型&#xff1a;休闲跳跃 视角&#xff1a;2d 乐趣点&#xff1a;通过挑战不同的关卡&#xff0c;战胜困难&#xff0c;乐趣无限&#xff0c;运用智慧跳上高台 时间&#xff1a;2019 个人职责&#xff1a; 所有程序部分的设计开发 此游戏是我和朋友独立开发的一款小游戏…

web作业2024.3.15

案例1&#xff1a; 使用CSS行内式为页面元素引入样式。b) 按照CSS样式规则为3号标题设置成微软雅黑、蓝色、26px字体c) 按照CSS样式规则为段落设置成微软雅黑、红色、28px字体。 七步诗 煮豆燃豆萁&#xff0c; 豆在釜中泣。 本是同根生&#xff0c; 相煎何太急。 案例2…

html--bug

文章目录 html html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>老师</title><style>body {background-color: #008000;margin: 0px;cursor: none;overflow: hidden;}</style></head><bod…

自动开箱机的工作原理与未来发展趋势

随着物流行业的迅猛发展&#xff0c;自动化、智能化的设备逐渐成为行业的新宠。其中&#xff0c;自动开箱机以其高效、精准的特点&#xff0c;受到了广泛关注。星派将详细解析自动开箱机的工作原理&#xff0c;并探讨其未来发展趋势&#xff0c;带领读者一同走进这一先进技术的…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞&#xff0c;未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息&#xff0c;导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

关系代数-练习

设有一个SPJ数据库&#xff0c;包括4个关系模式S、P、J和 SPJ。 S(SNO, SNAME,STATUS,CITY) ; P(PNO,PNAME,COLOR,WEICHT) ; J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY)。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商…