数据结构中的二种典型查找方式

【数据结构与算法】查找 对100个元素的有序表进行折半查找,最大比较次数为()对长度为n的有序表进行折半查找,判定树的高度为()假设长n的表,分成b块,每块里面有s条。下列关于分块查找的叙述中,正确的是() 阅读详情

1、二分查找与插值查找
二者唯一不同的是中间值的取值方式不同。二分查找是每次折半取值去缩小搜索范围,而插值查找则是int mid = left+(right - left)*(findData - Arr[left]) / (Arr[right] - Arr[left]);
插值查找
2、代码展示-利用递归实现

// 查找练习.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
using namespace std;

int HalfFind(int Arr[], int size,int findData);//二分查找
int _HalfFind(int Arr[], int left, int right, int findData);

int InsertFind(int Arr[], int size, int findData);//插值查找
int _InsertFind(int Arr[], int left, int right, int findData);

int _tmain(int argc, _TCHAR* argv[])
{
	int Arr[] = { 1,2,4,5,6,7,8,97};
	int size = sizeof(Arr) / sizeof(int);//元素个数

	int index = HalfFind(Arr, size, 4);
	if (index==-1)
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "找到了,该数据的下标为:" <<index <<endl;
	}

	/*int index = InsertFind(Arr, size, 4);
	if (index == -1)
	{
		cout << "没有找到" << endl;
	}
	else
	{
		cout << "找到了,该数据的下标为:" << index << endl;
	}*/

	return 0;
}

/*
它对要查找的序列有两个要求,一是该序列必须是有序的(即该序列中的所有元素都是按照大小关系排好序的,升序和降序都可以),
二是该序列必须是顺序存储的。
*/
int HalfFind(int Arr[], int size,int findData)
{
	return _HalfFind(Arr, 0, size - 1, findData);
}

int _HalfFind(int Arr[], int left, int right, int findData)
{
	int l = left;
	int r = right;
	int mid = left + (right - left) / 2;//中间值

	if (left>right)
	{
		return -1;//退出条件
	}

	if (findData ==Arr[mid])
	{
		return mid;//找到了
	}

	if (findData>Arr[mid])
	{
		return _HalfFind(Arr, mid + 1, right, findData);
	}
	if (findData<Arr[mid])
	{
		return _HalfFind(Arr, left, mid - 1, findData);
	}
}

int InsertFind(int Arr[], int size, int findData)
{
	return _InsertFind(Arr, 0, size-1,findData);
}
int _InsertFind(int Arr[], int left, int right, int findData)
{
	int l = left;
	int r = right;

	//int mid = left + (right - left) / 2;
	int mid = left+(right - left)*(findData - Arr[left]) / (Arr[right] - Arr[left]);

	if (left>right)
	{
		return -1;	
	}

	if (findData == Arr[mid])
	{
		return mid;
	}
	if (findData>Arr[mid])
	{
		return _InsertFind(Arr, mid + 1, right, findData);
	}
	
	if (findData<Arr[mid])
	{
		return _InsertFind(Arr, left, mid - 1, findData);
	}

}
合并数组与非合并数组——SystemVerilog 合并型数组(packed): — 合并型数组可以实现连续的存储,赋值时不需要用 '{ }。 //合并型数组 bit [3] [7:0] b_pack // 表示3行 x 8列的数组,[3]是高维度(高维度),[7:0]是低维度(第一维) 数组中,数据排列为{b_pack[3],b_pack[2],b_pack[1],b_pack[0]},其中每个b_pack为8个bit; bit是二值逻辑,每位bit只占据1位。故24位bit只占据一个word(一般一个word为32bit)的存储空间 阅读详情

相关推荐

SAP MM | 采购的自动寻源:货源清单(ME01)与配额协议(MEQ1)的应用与 MRP 逻辑

SAP MM模块中,当物料有多个供应商时,MRP生成的采购申请常因"固定供应商"字段为空而无法自动发单。系统寻源优先级为:配额协议>货源清单>采购信息记录。解决方案包括:1)货源清单指定唯一固定供应商;2)配额协议按比例精准拆分;3)配额协议长期分配更推荐。手工创建采购申请时配额协议无效。建议优先使用货源清单Fix标识或配额分配功能,避免拆分导致的单据碎片化。

RiverRia的专栏 823

数据结构之七大查找算法

七大查找算法一、顺序查找二、二分查找三、插值查找四、斐波那契查找五、树表查找5.1 最简单的树表查找算法——二叉树查找算法5.2 平衡查找树之2-3查找树(2-3 Tree)5.3 平衡查找树之红黑树(Red-Black Tree)5.4 B树和B+树(B Tree/B+ Tree)5.5 树表查找总结六、分块查找七、哈希查找7.1 什么是哈希表(Hash)?7.2 什么是哈希函数? 查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。    查找算法分类: (1)静态查

weixin_43520450的博客 3783

Zemax序列模式下激光二极管(LD)光源建模与像散校正实战

本文详细讲解了在Zemax序列模式下精确建立激光二极管(LD)光源模型并校正其像散的核心方法。通过将椭圆光束的发散角转换为渐晕系数,并巧妙利用理想柱面镜模拟像散,实现了对LD光源特性的高精度模拟。该方法特别适用于激光耦合、激光雷达等需要对像散光束进行精密控制的光学系统设计。

weixin_28455801的博客 436

数据结构之查找(顺序、折半、分块查找,B树、B+树、散列表)

一、线性结构查找 1、顺序查找 (1)无序的线性查找 基本思想:从线性表的一端开始,逐个检查关键字是否满足给定的条件。特点:当N比较大时,查找效率低。 (2)有序的线性查找:查效率比无序查找略高。 2、折半查找 基本思想:折半查找又称二分查找,仅适用于有序的顺序表。将给定的值与表中间位置的元素比较,相等则查找成功;不相等则继续在中间元素以外的前半部分或后半部分继续查找;如此重复,直到找到为止,若没有指定元素,则查找失败。 案例: 3、分块查找 基本思想:吸取了顺序查找和折半查找各自的优点,既有动态结.

qq_43752469的博客 6785

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南)

本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。

weixin_29062963的博客 102

混合精度训练与推理:平衡性能与效率

在深度学习领域,模型的训练和推理通常需要大量的计算资源和时间。随着模型规模的不断增大,如大型语言模型、复杂的视觉模型等,对计算资源的需求也呈指数级增长。混合精度训练与推理技术应运而生,它通过在训练和推理过程中同时使用不同精度的数据类型,在保证模型性能的前提下,显著提高计算效率,减少内存占用。本文的目的是全面介绍混合精度训练与推理技术,包括其原理、实现方法、应用场景以及相关工具和资源,帮助读者深入理解并掌握该技术,从而在实际项目中更好地平衡性能与效率。

操作系统内核探秘的博客 1068

[Data Structure & Algorithm] 七大查找算法

  查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。   查找定义:根据给定的某个值,在查找表中确定一个其关键字...

weixin_34128839的博客 3505

基于YOLOv8改进的目标检测算法研究及毕设实现全流程指南

在PyTorch中定义改进后的YOLOv8模型。首先,导入相关的库和模块,然后定义骨干网络、颈部和头部的结构。# 这里定义骨干网络的结构,例如使用改进的CSP结构# 卷积层、批归一化层、激活函数等# 更多的卷积层、批归一化层、激活函数等# 其他层...# 其他层的输出...然后,定义颈部和头部的结构,类似地,将注意力机制和特征增强方法集成到模型中。本毕设以YOLOv8为基础,通过集成注意力机制、应用特征增强技术等方法,改进了目标检测算法。

m0_64661770的博客 323

Java 查找方法

但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数据是否在容器当中,返回的索引无实际的意义。:对于表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能比折半查找要好的多。反之,数组中如果分布非常不均匀,那么插值查找未必是很合适的选择。:也称为是折半查找,属于有序查找算法。说明:元素必须是有序的,从小到大,或者从大到小都是可以的。代码跟二分查找类似,只要修改一下mid的计算方式即可。说明要查找的数字在中间节点左边。

小旺财的博客 820

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

华为FusionCompute之计算虚拟化

华为FusionCompute之虚拟化

jks212454的博客 2452

浅谈算法和数据结构: 七 二叉查找树

前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。 二叉查找树具有很高的灵活性,对其优化可以生成平衡二叉树,红黑树等高效的查找和插入数据结构,后文会一一介绍。 一 定义 二叉查找树(Binary Search Tr...

weixin_34319999的博客 428

【零基础入门unity游戏开发——unity3D篇】unity CharacterController 3D角色控制器最详细的使用介绍,并实现俯视角、第三人称角色控制(附项目源码)

【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用但是我发现很多人还是不理解,都跑来私信问我,所以决定重新做一个更加详细且简单控制器,主要是实现俯视角和第三人称角色控制。添加一个胶囊体,添加Character Controller组件,记得删除Capsule Collider组件,因为Character Controller自带了碰撞,所以不需要Character Controller参数介绍。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5020

典型数据结构学习

记录典型数据结构的学习概括总览

HoXio的博客 834

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据结构笔记之查找

我们学习数据结构之前的那些查找,比如说查找数据库,

dalleny的专栏 923

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

考研数据结构考点之查找

参照王道考研书整理的数据结构章节知识点,供大家学习,本篇文章是第七章查找的一些知识点

zwangshun的博客 4130

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【数据结构-查找】7.1顺序查找-折半查找-分块查找

摘要:本文详细介绍了静态查找表中的三种经典算法:顺序查找、折半查找和分块查找。顺序查找简单通用但效率低;折半查找(O(log₂n))高效但要求有序表;分块查找结合两者优点,通过建立索引表实现O(√n)复杂度。文章分析了各算法的实现代码、性能指标(ASL)和适用场景,并提供了对比总结表。顺序查找适合小数据量,折半查找适合静态有序大数据,分块查找则适用于需要平衡效率与灵活性的动态表。这些算法为学习更复杂的动态查找结构奠定了基础。

likuoelie的博客 1388

NO.11数据结构查找|ASL|顺序查找|折半查找|索引查找

本文系统介绍了查找算法的基础概念与几种典型查找方法。首先明确了查找的定义及静态/动态查找表的区别,并引入衡量查找效率的平均查找长度(ASL)概念。随后详细讲解了顺序查找算法,包括其实现方式、哨兵机制及ASL分析。针对有序表,重点介绍了高效的折半查找算法,阐述了其查找思想、实现代码及折半查找树的构建原理。最后介绍了索引查找方法,分析了其数据结构特点及不同查找策略下的ASL计算。通过具体实例和公式推导,全面比较了各种查找算法的时间复杂度特性,为选择合适查找策略提供了理论依据。

ChoSeitaku的博客 918

数据结构 - 静态查找

查找主要讨论顺序表、有序表、索引表和哈希表查找的各种实现方法,以及相应查找方法在等概率情况下的平均查找长度。 查找表(Search Table):相同类型的数据元素(对象)组成的集合,每个元素通常由若干数据项构成。 关键字(Key,码):数据元素中某个(或几个)数据项的值,它可以标识一个数据元素。若关键字能唯一标识一个数据元素,则关键字称为主关键字(Primary Key) ;将能标识若干个数

陆讯 3362

数据结构_查找

查找 概述 查找: ——在数据集(表)中找出一个特定元素(的位置)。 这一概念中涉及到以下几个相关的问题: (1)数据表:什么样数据表? 也就是数据表的组织形式?例如: 汉语字典、英语辞典; 一个城市的电话号码簿。 高考成绩表。 查找表: ——同类型的数据元素(记录)所构成的集合。 顺序表:数据元素构成一个序列。 树表:以树结构的形式组织。 散列表:以某种函数的方式来确定元素的地址,实现数据表的组织。 索引表:为元素建立索引,以提高查找的速度。 显然,查找的方法取决于数据表的组织形式。 例如:在汉语字典和英

asapigi的博客 455

内存管理基础:数据结构的存储方式

内存管理基础:数据结构的存储方式摘要 本文系统地介绍了四种主要的数据结构存储方式:连续存储(如数组)、链式存储(如链表)、索引存储和散列存储(如哈希表)。连续存储提供快速访问但大小固定;链式存储支持动态扩展但访问较慢;索引存储结合了两者优点;散列存储实现高效查找但需处理冲突。文章通过衣柜的生动比喻,结合流程图和代码示例,阐明了各种存储方式的原理、优缺点和应用场景,并提供了实际案例展示如何根据需求选择或组合不同存储方式。理解这些基础存储机制对编写高效代码和设计优秀数据结构至关重要。

从不水文,坚持创作,加油 5910

数据结构系列--查找

“查找--比较淡然的一章。” 主要知识点 查找表的检索机制 平均查找长度 折半查找表 二叉排序树 哈希表 1 查找表的检索机制 本章给出了三种类型的查找表, 第一类是线性索引,记录关键字一般按序排列,以提高检索速度。对应检索采用基于比较检索方法。 第二类是树形检索,树形的典型结构是二叉排序树,其检索的时间复杂度与树的深度同级为对数函数,其对应的检索方法是基于树表式的检索,即将带查找的表组织成树,在树形结构上实现查找。 第三类是哈希结构,根据数据的”关键值”计算数据的存储地址,哈希表既.

qq_36400704的博客 1104

数据结构与算法 - 数组与二分查找 + Leetcode典型题

数据结构与算法 - 数组与二分查找 + Leetcode典型题

ASDF的博客 916

数据结构是计算机存储、组织数据的方式,而排序与查找算法则是对这些数据进行高效操作的重要手段

数据结构是计算机存储、组织数据的方式,而排序与查找算法则是对这些数据进行高效操作的重要手段。不同的数据结构适用于不同的应用场景,配合相应的算法可以极大提升程序的性能。

[Blog][Domain] programb.blog.youkuaiyun.com 963

数据结构期末复习:查找算法专项练习解析(附错题总结)

知识点掌握情况建议二分查找前提与性能✅ 良好熟记公式:最大比较次数 = ⌊log₂n⌋ + 1顺序查找成功/不成功比较次数❌ 易混淆区分清楚:不成功 = 查完整个表(n 次)BST 性质与查找路径⚠️ 部分错误牢记:路径必须满足动态区间约束哈希冲突处理 vs 哈希函数✅ 正确注意术语分类删除再插入 BST 节点✅ 正确理解删除操作对结构的影响查找算法虽基础,但细节繁多,尤其在边界条件、平均性能计算、BST 路径合法性等方面容易出错。动手画图(如判定树、BST 插入过程)

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 1080

严蔚敏数据结构查找的基本操作_算法及数据结构简单理解

算法和数据结构一、算法及数据结构理解算法是在有限的空间和时间下,使用具体的数学逻辑和特定的数据结构解决特定的问题。数据结构是算法逻辑计算过程中的一种载体或形式。数据结构是进行数据存取、实现具体数学逻辑的具体方式。在物理、生物、化学上有一句著名的话——结构决定功能。同样在数据结构的世界中,有什么样的数据结构就决定了能完成什么样的功能,决定了能否高效地完成某种操作。假如有一种业务场景是:查找最后(最近...

weixin_39747577的博客 297
上一篇: 7种典型的排序算法-代码及原理说明
下一篇: 无序树中节点的插入
靠普科技
博客等级 码龄7年 14粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值