顺序查找

实现顺序查找的算法 /** *    实验题目: *        实现顺序查找的算法 *    实验目的: *        领会顺序查找的过程和算法设计 *    实验内容: *        设计程序,输出在顺序表(3, 6, 2, 10, 1, 8, 5, 7, 4, 9)中采用 *    顺序查找方法查找关键字5的过程 * */ #include <stdio.h> #define MAX_... 阅读详情
 顺序表的查找分为三种。简单顺序查找、有序表的二分查找、索引表的顺序查找。这里主要介绍前两种。

一、简单顺序查找

        简单顺序查找对数据表的特性没有要求,即是否具有递增递减特性基本不影响查找的性能。基本死就

是从表的一段开始逐个比较元素,若找到则返回元素在表中对应位置;否则,则返回一个无意义的位置标

识。

       值得一提的是设置监视哨这一思想,将a[0]设置成监视哨则可以避免每次比较元素后都需要判断下标是

否越界这一问题,从而节省了时间。当然,a[0]中将不能在存放有效元素。

          下面介绍一个以整型数组为例的查找实现:

/*直接顺序查找*/
int sequential_search(int a[],int n,int key)  //n为数组元素个数,key为待查找元素
{
	int i=n;
	a[0]=key;   //a[0]是监视哨

	while(a[i]!=key)  //若数组中无key,则一定会得到a[0]=key
		i--;

	return i;     //查找失败返回0
}

 

二、有序表的二分查找

        显然二分查找要求表是升序或降序的。并利用有序这一特性改善了查找性能。那么,若原始表无序又

该如何呢?排序呗!

以升序表为例:

        二分查找的基本过程如下:设查找变量首尾下标分别用low和high标志,将待查关键字和上述区域的中

间元素比较,中间元素下标为mid=(low+high)/2,并根据比较结果,分别作以下处理,

        ①key==a[mid],查找成功,返回mid的值;

        ②key<a[mid],则继续查找,查找区域变成low=low,high=mid-1。

        ③key>a[mid],也继续查找,查找区域变成low=mid+1,high=high。

         现在,又出现了另一个关键问题:查找何时结束?显然,若查找到key了,返回位置即是结束;如果表

中没有key则是当low>high是结束。

         1、二分查找的非递归算法:

int bin_search(int a[],int n,int key)  //n为数组元素个数,key是待查找元素
{
	int mid,low=0,high=n-1;   //默认从数组起始位置开始查找

	while(low<=high)
	{
		mid=(low+high)/2;   //折半

		if(key==a[mid])     //根据比较结果划分查找区域
			return mid;
		else if(key<a[mid])
			high=mid-1;
		else
			low=mid+1;
	}

	return -1;    //没有查找到,返回一个不可能的下标作为标志
}


            2、递归算法:

int bin_search(int a[],int low,int high,int key) 
{
	int mid;

	if(low>high)
		return -1;
	else
	{
		mid=(low+high)/2;
		
		if(a[mid]==key)
			return mid;
		else if(key<a[mid])
			return bin_search(a,low,mid-1,key);
		else
			return bin_search(a,mid+1,high,key);
	}
}


           写在最后,简单顺序查找的查找长度为O(n),二分查找的查找长度为O(log2n)。可见,后者比前者具

有更好的性能,但不要忘了数据表可能要排序这一点可能会 带来的性能消耗。

 

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理 用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。 阅读详情

相关推荐

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3456

顺序查找(算法学习)

查找就是从从某个数据结构中找出指定条件的元素,找到满足的条件元素便表示查找成功,反之代表查找失败,查找的方式也会根据元素所处的数据结构的不同而出现不同的查找方式。

weixin_44451672的博客 1万+

解决Visual C++2008安装失败,error 1935

重装系统后Visual C++没了,其他都能装上但VC2008会报这个error 1935。鉴于我把网上所有的解决方法排了一遍错,我也不知道是哪一步起效,所以就都放上来了。特别注意:报error 1935的错误原因可能不尽相同,比如我的报错开头为An error occurred,结尾为HRESULT:0x80070005。80070005 拒绝访问通常是权限问题,安装Visual C++无法写入文件夹或注册表(直接跳转第7步)

weixin_44427808的博客 1万+

查找(一)—— 顺序查找

顺序查找(又称线性查找)是一种简单的查找算法,它按照数据元素的顺序从前往后依次查找目标元素。顺序查找的基本思路是将目标元素与当前位置的元素进行比较,若相等则查找成功;否则继续向后查找,直到找到目标元素或搜索到末尾位置为止。其中n为数据元素的个数。不论有序无序、连续存储还是离散存储,都能使用,使用范围广,但是速度慢,时间复杂度为O(n)。

qq_50685510的博客 6749

Nmap的介绍、安装 并进行网络扫描

Nmap概述 Nmap(Network Mapper(网络映射器))是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Cheney ' blog 2万+

告别Python中间件!C#原生调用YOLOv11/v12:工业视觉检测零语言壁垒全流程

本文介绍了一种基于C#和ONNX Runtime的工业视觉检测解决方案,解决了传统YOLO模型在工业应用中面临的三大痛点:语言壁垒、性能损耗和模型更新困难。该系统采用三层架构设计,支持C#原生调用YOLO模型,无需中间件,性能损耗低于5%,满足工业产线30FPS+的实时性要求。文章详细阐述了环境搭建、模型导出规范、核心代码实现及工业级优化方案,提供可直接用于生产环境的完整流程,实现了训练与部署的解耦,显著降低了维护成本。该方案兼容主流YOLO版本,支持全平台部署,为工业视觉检测提供了高效可靠的C#集成方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 189

经典算法系列之(二):七大查找——顺序查找

顺序查找详细解析

fuyuyf的博客 4951

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2399

经典算法——顺序查找

😁学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰👍⭐️⭐️⭐️。Java 顺序查找算法

Lifelong learning 7017

2025美赛C题奥运奖牌榜模型(附代码+全保姆教程)Models for Olympic Medal Tables

伟大教练”效应的测量方法定义奖牌变化率:−−​如果变化率显著为正,且超出历史平均增长率,则认为存在“伟大教练”效应。使用统计方法(如t检验)验证教练到来是否带来显著性差异。

博客 6372

基于深度学习的番茄成熟度检测系统——YOLOv5、YOLOv8、YOLOv10及UI界面的实现

YOLO是一种快速且准确的目标检测模型,近年来,YOLOv5、YOLOv8和YOLOv10作为YOLO系列的重要版本,分别在速度、精度和效率上进行了优化。下面我们简要介绍这些模型。本文介绍了如何基于YOLOv5、YOLOv8和YOLOv10等深度学习模型,结合PyQt5设计一个番茄成熟度检测系统。通过训练模型、优化算法和设计用户友好的界面,我们能够构建一个高效且准确的番茄成熟度检测系统,广泛应用于农业自动化和智能化管理中。

YOLO 1002

(详解)数据结构线性表的查找——顺序查找、折半查找、分块查找

在本文中,我们详细讨论了数据结构线性表的查找算法,包括顺序查找、折半查找和分块查找。这些算法在不同的应用场景和数据特性下有着各自的优势和局限性。

StarPrayers.的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

顺序表查找——顺序查找、有序表查找(多种方法)及次优查找树

查找8.2 顺序表8.2.1 顺序表的查找基本思想顺序存储结构下的顺序查找算法平均查找长度8.2.2 有序表的折半查找折半查找的算法思想折半查找算法一般代码二叉搜索树 8.2 顺序表 采用顺序存储结构的数据表称为顺序表。顺序表适合作静态查找。 8.2.1 顺序表的查找 基本思想 设有n个数据元素的顺序表,从表的一端(前端或后端)开始,用给定的值依次和表中各数据元素的关键字进行比较,若在表中找到某个数据元素的关键字和给定值相等,则查找成功,给出该数据元素在表中的位置;若查遍整个表,不存在关键字等于给定值的数据

lseaJK的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

索引顺序查找(分块查找)

索引顺序查找又叫分块查找,它是介于顺序查找和折半查找之间的一种查找方法。折半查找虽然具有很好的性能,但其前提条件是线性表顺序存储而且按照关键字排序,这一前提条件在结点数很大且表元素动态变化时难以满足。而顺序查找虽然可以解决表元素动态变化的要求,但查找效率很低。如果既要保持查找效率,又要能够满足表元素动态变化的需求,则可采用索引顺序查找的方法。 在此查找方法中,除查找表外还需要为查找表建立一个“索引表”,索引表是分段有序的。将查找表分为若干个子表,为每一个子表建立一个索引项存储在索引表中,索引项包括两项内容

Bruce_0712的博客 7761

顺序表的顺序查找和折半查找

顺序查找: #include <iostream> using namespace std; int SeqSearch(int r[],int n,int k) { r[0]=k;//下标0用作哨兵存放要查询的数 int i=n; while(r[i]!=k)//不用判断下标i是否越界 { i--; } return i...

Andrelia的博客 4929

顺序查找、折半查找、分块查找

查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找的结果一般分为两种:一是查找成功,即在数据集合中找到满足条件的数据元素;二是查找失败。 查找表(查找结构):用于查找的由同一类型的数据元素(或记录)构成的集合。查找表本质是表中记录之间仅存在"同属一个集合”这个逻辑的集合结构。为此,我们在数据元素之间人为地加上一些关系,以便按照某种规则查找,即用另一种数据结构来表示查找表。

24考研人晴落的博客 4511

【查找】顺序查找

顺序查找 定义:顺序查找就是在文件的关键字集合key[1,2,…,n]中找出与给定的关键字key相等的文件记录。 步骤: 1.从文件的第一个记录开始,将每个记录的关键字与给定的关键字key进行比较; 2.如果查找到某个记录的关键字等于key,则查找成功,返回该记录的地址;如果所有关键字都与key进行了比较,但都未匹配,则本次查找失败,返回失败标志; 其算法描述如下: int search(keyt...

秃头仔仔-安凯雯的博客 1200

查找算法——顺序查找

数据结构与算法——顺序查找

m0_63020222的博客 8128

查找算法之顺序查找和二分查找

1.顺序查找 代码如下: #include<cstdio> #include<iostream> using namespace std; const int maxn = 110; int arr[maxn]; int SequenceSearch(int arr[],int key, int n); int main(){ int n,key; printf("请输入元素的个数:\n"); scanf("%d",&n); printf("请输入数组

xiaoyong5854的博客 9335

查找算法-顺序查找、有序查找

1.顺序表的查找 1)顺序查找 顺序查找又称为线性查找,是一种最简单的查找方法。         从表的一端开始,向另一端逐个按要查找的值key 与关键码key进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与关键码相同的key值,则查找失败,给出失败信息。 说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是

黄俊彬 1万+

查找(顺序查找,折半查找,分块查找)

查找 ​ 查找是在查询数据过程中必不可少的一个环节,那么如何来进行查找,以及如何进行高效率的查找,就是接下来要解决的问题。 文章目录查找查找的概念顺序查找顺序查找-算法原理顺序查找-算法实现顺序查找-性能分析折半查找折半查找-算法原理折半查找-算法实现折半查找-性能分析分块查找分块查找-算法原理分块查找-算法实现分块查找-性能分析 查找的概念 ​ 首先提出一些定义,在查找元素的时候,必然是从一堆数据中去找自己想要的数据,那么这种由同一类型的数据元素构成的集合就被称为查找表。对于查找表可执行以下操作: 查询

weixin_44267007的博客 4361

有序顺序表的查找

有序顺序表的查找 一、 1.初始化一个顺序表 2.对顺序表进行顺序查找 3.建立一个有序顺序表 4.对有序顺序表进行折半查找 二、 1.首先建立一个结构体以便顺序表的使用,利用顺序查找算法的思想,我们把要查找的数存在List->data[0],从顺序表的后面依次向前便利直到我们找到与List->data[0]里面的元素一样的时候做好标记,返回1表示查找成功;若直到第0个元素仍未查找到,则返回0表示未查找到该元素。 2.我们首先建立一个顺序表,我们可以利用随机函数rand()随机生成自己想要所在区

weixin_45875453的博客 3578
上一篇: HDU1248 1407 for循环暴力
下一篇: 树表查找之二叉排序树
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值