每天学习一个基础算法之顺序查找

news2024/9/21 11:06:39

目录

前言:

1、对顺序查找概念的诠释

2、顺序查找的使用场景

 3、顺序查找的实现代码

顺序查找主体(以接口函数的形式)

测试部分(主函数调用)

 调试结果


前言:

查找也是一种经常使用的算法,即根据给定的值,在一组数据中找到一个等于给定值的记录或数据元素,例如查找列车车次、学号、房间号等等。今天我们要学习的是基础的查找算法之一线性查找。

1、对顺序查找概念的诠释

顺序查找也称线性查找,即从数据结构线性表的一端开始,顺序扫描,依次将扫描的结果与给定的值进行匹配,若相等则表示查找成功;若扫描结束仍然没有与给定值匹配的结果则表示查找失败。

2、顺序查找的使用场景

顺序查找多用于查找无序的数据,若对有序数据采用顺序查找进行查找,则会大大降低程序的运行效率。

(当遇到有序数据时,我们一般会采用二分查找法,它能大大提高查找的效率,对二分查找法我会放到下一篇博客中。)

注意:若只对少量数据只需进行查找,而不进行其它操作的情况下,为单纯使用二分查找法来增加效率,而对无序数据进行排序,其实效率是远不如直接用顺序查找法进行查找的。 所以学会使用顺序查找是必要的。

 3、顺序查找的实现代码

顺序查找的代码是十分容易实现的,它本质上就是对一个数组进行遍历。本次代码仍然以函数形式呈现。

顺序查找主体(以接口函数的形式)

//线性查找法的实现
int linear_seek(int arr[], int sz, int target)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        if (arr[i] == target)
        {
            return i;
        }
    }
    return -1;
}

 实现思路:

对传入数组进行遍历(顺序扫描),若匹配结果与给定值相同,返回遍历到数的下标(索引),若遍历到最终仍然没有与给定值匹配的结果则返回-1(-1可以改为任何与查找到的返回值不冲突的值),表示数组中没有与给定值相等的数据。

测试部分(主函数调用)

#include <stdio.h>
int main()
{
    int arr[] = { 10,7,4,9,6,1,8,3,2,5 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    
    int ret = linear_seek(arr, sz, 4);
   
    if (ret != -1)
    {
        printf("下标为%d\n", ret);
    }
    else
    {
        printf("没找到!\n");
    }
    return 0;
}

 调试结果

 

每日一学,今天你又超过了百分之九十九的人。

如果本篇文章对你有帮助,请点个关注和赞吧!

若是对本文有什么独特的见解,也可以在评论区进行讨论。

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

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

相关文章

机器学习/数据分析--通俗语言带你入门随机森林,并用随机森林进行天气分类预测(Accuracy为0.92)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 机器学习是深度学习和数据分析的基础&#xff0c;接下来将更新常见的机器学习算法及其案例注意&#xff1a;在打数学建模比赛中&#xff0c;机器学习用的…

心脑血管科曹启富医生:吃什么可以降低高血压

患者&#xff1a;曹医生&#xff0c;我家人有高血压&#xff0c;听说有些食物可以帮助降低血压&#xff0c;请问吃什么可以降低高血压呢&#xff1f; 曹医生说&#xff1a;您的问题非常实际&#xff0c;也是很多高血压患者和家属关心的问题。确实&#xff0c;通过合理的饮食调…

解决Springboot项目Maven下载依赖速度慢的问题

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

腾讯云Linux服务器运维,安装JDK、rabbitmq、nginx、Redis、ClickHouse

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; CODING 代码托管目录 1、…

笔记整理—uboot启动过程(8)uboot启动二阶段结束

前文说到&#xff0c;uboot实现了malloc()可以申请堆内存了&#xff0c;今天这章将会对uboot进行一个了结。 Ip Adderss开发板地址也就是开发板的IP。 gd->bd->bo_ip_addrgetenv_Ipaddr("ipaddr"); 通过getenv转string_to_ip实现&#xff0c;完成所见的ip地址…

Prometheus监控Mysql实例

Prometheus监控Mysql实例 配置mysql_exporter 挂载目录为/home/mysql_export mkdir /home/mysql_export 创建链接数据库配置文件 vim my.cnf [client] user export # 用户名 password Jianren123 # 密码 host 172.16.0.3 # mysql地址 port 3306 # 端口配…

《高等代数》艾森斯坦判别法典型例题

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;艾森斯坦判别法是用来判断多项式是否可约的一种方法。 2&#xff09;本题技巧性较强&#xff0c;需要掌握的知识点有除法求导法则、艾森斯坦判别法、 组…

智能合约审计工具(一)——cloc界定审计的代码数量,审计难度。cloc,solidity metrics 使用的入门,细节与解答

为什么要界定源代码数量 代码审计是一种评估软件代码质量、安全性和合规性的过程。在进行代码审计之前&#xff0c;先界定源代码的数量有以下几个原因&#xff1a; 审计范围的确定&#xff1a;了解源代码的规模可以帮助审计团队确定审计的范围和深度&#xff0c;从而制定合理的…

TCN合集(TCN、TCN-GRU、TCN--GRU--Attention、TCN-Bigru、TCN-BiGRU-Attention)

TCN、TCN-GRU、TCN-GRU-Attention、TCN-BiGRU、TCN-BiGRU-Attention&#xff09;在结构原理上既有相似之处&#xff0c;也存在一些关键的不同点。以下是对这些模型的异同点以及它们之间优劣性的对比&#xff1a; TCN合集&#xff08;TCN-GRU、TCN--GRU--Attention、TCN-Bigru等…

docker网络+跨主机容器之间的通讯

docker网络 使用docker network 查看桥 [rootdocker ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 6cacea2a7a49 bridge bridge local 5546f1e40d41 host host local 2e567ec1e04f none null local bridge bridge和na…

使用c++编写com组件实现windows外壳扩展(自定义右键上下文菜单扩展)

一、作用 允许在 Windows 文件资源管理器中&#xff0c;当用户在文件、文件夹或空白处右键点击时&#xff0c;根据一定的逻辑显示自定义的菜单项 二、原理 COM组件 微软开发的一种软件架构模型&#xff0c;主要用于在不同编程语言之间实现二进制级别的可重用性和互操作性。…

文件上传面板中限制需要的文件格式,并且隐藏“所有文件”选项

直接说需求&#xff1a;需要实现在文件上传面板中限制需要的文件格式&#xff0c;并且不想展示“所有文件”这个选项&#xff0c;应该怎么做嘞&#xff1f;效果如下图&#xff1a; 这里用到了 window.showOpenFilePicker 方法实现&#xff0c;首先定义接受的格式及限制&#xf…

Python 生成随机的国内 ip

示例代码&#xff1a; import randomdef generate_random_cn_ip():# 中国大陆IP范围start_ip "36.54.0.0"end_ip "123.255.255.254"# 将IP地址转换为整数start_ip_num int(start_ip.replace(".", ""))end_ip_num int(end_ip.rep…

【FreeRTOS】信号量实验-控制车辆运行

目录 0 前言1 控制车辆运行2 不使用信号量3 使用计数型信号量3.1 运行两辆车运行3.2 运行三辆车运行 4 使用二进制信号量5 补充信号量知识5.1 两种信号量对比5.2 信号量函数5.3 创建5.4 删除5.5 Take / Give5.5.1 xSemaphoreGive5.5.2 pxHigherPriorityTaskWoken5.5.3 xSemapho…

库存零件耗尽 任天堂宣布停止New 3DS的维修服务

由于库存零件已耗尽&#xff0c;任天堂宣布自8月28日起停止接受New 3DS游戏机的维修服务。在今年3月份时&#xff0c;任天堂就宣布过2DS、New 3DS、New 3DS LL的维修服务将在库存零件耗尽后终止&#xff0c;目前来看2DS和New 3DS LL的维修服务还将继续&#xff0c;直到零件耗尽…

算法中常用的排序

1.概念 排序是将一组数据,依指定的顺序进行排列的过程. 2.排序的分类 (1).内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序.包括:交换式排序法,选择式排序法和插入式排序法 (2).外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序.包括:合并排序…

FTP主动与被动模式

文件传送协议FTP&#xff1a; 提供交互式访问FTP屏蔽了各计算机系统的细节&#xff0c;因⽽适合于在异构⽹络中任意计算机之间传送⽂件。 传统FTP默认不加密 工作模式&#xff1a;&#xff08;站在服务器的角度&#xff09; 主动模式&#xff1a;服务器主动使用TCP20端口发起数…

群晖NAS配置SFTP服务并结合内网穿透工具实现无公网IP远程传输文件

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 本文主要介绍如何将在群晖NAS中开启SFTP服务&#xff0c;并安装cpolar内网穿透工具配置公网地址&#xff0c;轻松打造一套高效、安…

LRN正则化是什么?

LRN正则化&#xff0c;全称为Local Response Normalization&#xff08;局部响应归一化&#xff09;&#xff0c;是一种在深度学习&#xff0c;特别是在卷积神经网络&#xff08;CNN&#xff09;中常用的正则化技术。该技术旨在通过模拟生物视觉系统中的侧抑制现象&#xff0c;…

【第0003页 · 递归】N皇后问题

【前言】本文以及之后的一些题解都会陆续整理到目录中&#xff0c;若想了解全部题解整理&#xff0c;请看这里&#xff1a; 第0003页 N皇后问题 今天我们来看一个著名的问题&#xff1a;N皇后问题。在此之前&#xff0c;我们先温习一下递归的思想。当然&#xff0c;温习的方式…