查找算法-顺序查找法(Sequential Search)

news2024/9/23 9:36:23

目录

  查找算法-顺序查找法(Sequential Search)

1、说明

2、算法分析

3、C++代码 


  查找算法-顺序查找法(Sequential Search)

1、说明

顺序查找法又称线性查找法,是一种比较简单的查找法。它是将数据一项一项地按顺序逐个查找,所以无论数据顺序如何,都得从头到尾遍历一遍,该方法的优点是文件在查找前不需要进行任何处理与排序;缺点是查找速度比较慢。如果数据没有重复,找到数据就可以中止查找,在最差情况下是未找到数据,需要进行n次比较,在最好情况下则是一次就找到数据,只需要1次比较。

2、算法分析

  1. 时间复杂度:如果数据没有重复且找到数据就可以中止查找,那么在最差情况下就是未找到数据,表明进行了n次比较,因而时间复杂度为O(n)
  2. 在平均情况下,假设数据出现的概率相等,则需进行(n+1)/2次比较。
  3. 当数据量很大时,不适合使用顺序查找法。如果预估所查找的数据在文件前面的部分,就可以减少查找的时间。

3、C++代码 

#include<iostream>
using namespace std;

void SetData(int* Data, int Size) {
	for (int i = 0; i < Size; i++) {
		Data[i] = rand() % 150 + 1;
	}
}

void Print(int* Data, int Size) {
	for (int i = 0; i < Size / 10; i++) {
		for (int j = 0; j < 10; j++) {
			cout << Data[i * 10 + j] << "\t";
		}
		cout << endl;
	}
}

int SequentialSearch(int* Data, int Size, int Value) {
	int index = -1;
	for (int i = 0; i < Size; i++) {
		if (Data[i] == Value) {
			index = i;
			break;
		}
	}
	return index;
}

int main() {
	int Size = 80;
	int* Data = new int[Size] {0};

	SetData(Data, Size);
	cout << "原始数据:" << endl;
	Print(Data, Size);
	cout << "---------------------" << endl;

	int num = 0;
	cout << "请输入想要查找的数据:";
	cin >> num;

	int index = -1;
	index = SequentialSearch(Data, Size, num);

	if(index != -1)
		cout << "查找的数据在数据库的第[ " << index + 1 << " ]位" << endl;
	else 
		cout << "在数据库中没有找到该数据" << endl;

	return 0;
}

输出结果 

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

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

相关文章

硬件知识积累 PCIE 接口

1. PCIE 是什么 中文名称&#xff1a;高速串行计算机扩展总线标准 PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准&#xff0c;它原来的名称为“3GIO”&#xff0c;是由英特尔在2001年提出的&#xff0c;旨在替代旧的PCI&#xff0c…

nexus 快速搭建-本地私有仓库 -maven

场景&#xff1a; 需要上传打包starer本地、局域网内 jar包上传、下载搭建后本地有层代理&#xff0c;可节省代宽&#xff0c;无网可拉包等… 下载&#xff1a; https://help.sonatype.com/repomanager3/product-information/download 基本说明&#xff1a; proxy 用来代理远程…

ChatGPT AIGC 快速合并Excel工作薄 Vlookup+INDIRECT

在职场中进行数据处理,数据分析汇报与统计的过程中,经常会遇到这样的一个问题,那就是需要统计的数据源在多个文件中,多个工作薄中,如果要进行数据处理,汇总的时候会很不方便。 如果要汇总6个月的数据可能就得需要手动复制了。 再或者用其它方法来进行数据合并。 例如我…

高效的文件管理方法:如何批量在文件名中间插入特定内容

在高效的文件管理中&#xff0c;批量操作是一项非常重要的技能。通过批量操作&#xff0c;我们可以同时处理多个文件&#xff0c;节省时间和精力。本文将介绍一种实用的方法&#xff0c;即云炫文件管理器如何在文件名中间批量插入特定内容&#xff0c;以实现高效的文件管理。现…

力扣刷题 day55:10-25

1.数组异或操作 给你两个整数&#xff0c;n 和 start 。 数组 nums 定义为&#xff1a;nums[i] start 2*i&#xff08;下标从 0 开始&#xff09;且 n nums.length 。 请返回 nums 中所有元素按位异或&#xff08;XOR&#xff09;后得到的结果。 方法一&#xff1a;位运…

Go学习第九章——面向“对象”编程(三大特性与接口和断言)

Go面向“对象”编程&#xff08;三大特性与接口和断言&#xff09; 1. 封装1.1 介绍1.2 快速入门 2.继承2.1 介绍2.2 快速入门2.3 深入学习 3.接口3.1 接口特点和语法说明3.2 快速入门3.3 注意事项和细节说明3.4 接口和继承关系 4. 多态4.1 基本概念4.2 快速入门4.3 使用场景 5…

大数据调度最佳实践 | 从Airflow迁移到Apache DolphinScheduler

迁移背景 有部分用户原来是使用 Airflow 作为调度系统的&#xff0c;但是由于 Airflow 只能通过代码来定义工作流&#xff0c;并且没有对资源、项目的粒度划分&#xff0c;导致在部分需要较强权限控制的场景下不能很好的贴合客户需求&#xff0c;所以部分用户需要将调度系统从…

ROS笔记之visualization_msgs-Marker学习

ROS笔记之visualization_msgs-Marker学习 code review! 文章目录 ROS笔记之visualization_msgs-Marker学习一.line_strip例程二.line_list例程一二.line_list例程二二.TEXT_VIEW_FACING例程三.附CMakeLists.txt和package.xml五.关于odom、base_link和map坐标系六.关于visualiz…

工作:三菱伺服驱动器连接参数及其电机钢性参数配置与调整

工作&#xff1a;三菱伺服驱动器参数及电机钢性参数配置与调整 一、三菱PLC与伺服驱动器连接参数的设置 1. 伺服配置 单个JET伺服从站链接侧占用点数:Rx/Ry占用64点、RWw/RWr占用32点 图中配置了22个JET伺服从站&#xff0c;占用点数:Rx/Ry占用64222048‬点、RWw/RWr占用322…

薛定谔的猫重出江湖?法国初创公司AliceBob研发猫态量子比特

总部位于巴黎的初创公司Alice&Bob使用超导芯片的两个相反的量子态&#xff08;他们称之为“猫态量子比特”芯片&#xff09;来帮助开发量子计算的不同自旋方式。&#xff08;图片来源&#xff1a;网络&#xff09; 有的人认为&#xff0c;构建量子计算机的模块模仿了著名的…

安科瑞剩余电流继电器在智能建筑中的应用

安科瑞 华楠 【摘 要】 分析了智能建筑应用剩余电流继电器的必要性&#xff0c;介绍了ASJ剩余电流继电器的主要功能、工作原理、分类情况和提出了在选择剩余电流保护断路器时的原则和注意事项。 【关键词】 ASJ剩余电流继电器&#xff1b;智能建筑&#xff1b;应用 一、前言…

SQL sever中函数(2)

目录 一、函数分类及应用 1.1标量函数&#xff08;Scalar Functions&#xff09;&#xff1a; 1.1.1格式 1.1.2示例 1.1.3作用 1.2表值函数&#xff08;Table-Valued Functions&#xff09;&#xff1a; 1.2.1内联表值函数&#xff08;Inline Table-Valued Functions&am…

C笔记:引用调用,通过指针传递

代码 #include<stdio.h> int max1(int num1,int num2) {if(num1 < num2){num1 num2;}else{num2 num1;} } int max2(int *num1,int *num2) {if(num1 < num2){*num1 *num2; // 把 num2 赋值给 num1 }else{*num2 *num1;} } int main() {int num1 0,num2 -2;int…

深度学习模型笔记

加载和保存模型参数 保存模型参数 net MLP() # 此处省略训练过程&#xff0c;在训练之后&#xff0c;保存模型参数 # 保存字典格式的模型参数&#xff0c;模型参数名 torch.save(net.state_dict(), mlp.params) 加载模型参数 clone MLP() # 加载模型参数 clone.load_state…

第11期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

知识图谱+推荐系统 文献阅读

文献阅读及整理 知识图谱推荐系统 知识图谱 1 基于知识图谱的电商领域智能问答系统研究与实现 [1]蒲海坤. 基于知识图谱的电商领域智能问答系统研究与实现[D].西京学院,2022.DOI:10.27831/d.cnki.gxjxy.2021.000079. 知识点 BIO标记策略进行人工标记,构建了电商领域商品…

【LeetCode 算法专题突破】链表(⭐)

文章目录 前言1. 移除链表元素题目描述代码 2. 设计链表题目描述代码 3. 反转链表题目描述代码 4. 两两交换链表中的节点题目描述代码 5. 删除链表的倒数第 N 个结点题目描述代码 6. 链表相交题目描述代码 7. 环形链表 II题目描述代码 总结 前言 链表题目一向是面试算法考察的…

【2024秋招】万得后端开发java 2023-7-13 2.30pm 一二面面经(附答案)

一面&#xff1a;20min 1 自我介绍 2 微服务架构 1 nacos作为配置中心&#xff0c;如果nacos服务失效了&#xff0c;各个服务之间的调用如何保持高可用呢&#xff1f; 答&#xff1a;nacos注册中心本地有缓存&#xff0c;所以请求来了还是能够正常提供一段时间的服务&#xff…

c语言进制的转换2进制转换8进制

c语言进制的转换之2进制转换8进制 c语言的进制的转换 c语言进制的转换之2进制转换8进制一、八四二一法则二、二进制转换八进制方法 一、八四二一法则 二、二进制转换八进制方法 如&#xff1a;111000110101001转换成八进制 按照八四二一法则 将二进制3个一等分变成&#xff1a…

LVS集群-DR模式【部署高可用LVS-DR集群】

文章目录 2.2 实战&#xff1a;配置LVS-DR集群2.2.1 配置IP2.2.2 生成ens33:1配置文件2.2.3 配置LVS-DR规则2.2.4 两台RealServer的IP配置Alastor62&#xff08;配置IP&#xff1a;192.168.1.62&#xff09;Alastor64&#xff08;配置IP&#xff1a;192.168.1.64&#xff09;客…