数据结构——集合和静态查找表

集合:数据元素同属一个集合,具有关键字值(键值)key,数据元素之间没有逻辑关系,集合两大核心操作是查找和排序

查找表:用于查找的数据结构,分为静态查找表和动态查找表,静态查找表的数据元素个数和值都不变,动态查找表支持元素的插入、删除

查找:确定具有特定键值的数据元素在查找表中是否存在,可分为内部查找和外部查找,内部查找的性能通过平均查找长度(ASL)评估,外部查找性能通过访问外存速度评估

静态查找表通常用数组来实现,第0个下标变量存放待查找的元素,查找成功返回下标,查找失败返回0

无序表的查找方法:顺序查找,设置哨兵,从最后一个元素往前查找,时间复杂度O(n),ASL=(n+1)/2

有序表的查找方法:①顺序查找(利用有序性),时间复杂度O(n);②二分查找,时间复杂度O(logn);③插值查找(二分查找延伸,通过公式计算下一查找位置),要求数据分布比较均匀;④分块查找(索引查找),对查找表分块建立索引表。查找分两步:查找索引和查找块,n个元素分为m块,时间复杂度ASL=1/2(m+n/m)+1,当m=sqrt(n)时,查找效率最高,时间复杂度为O(根号n)

用查字典类比:
通过查找单词structure,首先通过A-Z索引,找到S块,接着进行块内查找,估计一下t应该在靠后的位置[二分查找/插值查找],往后翻字典,找到st后,使用顺序查找一个一个比较直到找到单词[顺序查找]。

STL中algorithm头文件包含两个查找元素,find,顺序查找,返回迭代器;binary_search,二分查找,返回布尔类型

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

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

相关文章

求将TXT文本转换为Word文档的方法

一,前言 在现代办公环境中,文本文件的转换已成为一项常见的任务。其中,将TXT文本转换为Word文档是最常见的需求之一。这种转换不仅可以帮助我们更好地编辑和格式化文本,还可以提高文件的安全性和兼容性。本文将详细介绍如何将TXT…

开源AI引擎:自然语言处理技术在人岗匹配中的应用

一、应用场景介绍 如何从海量的求职者中精准地匹配到合适的候选人,是每个人力资源部门都需要解决的问题。自然语言处理(NLP)技术的发展为人岗匹配提供了新的解决方案。通过信息抽取和文本分类技术,企业可以更高效地分析职位描述和…

刷题日记——重建二叉树专题

1.层序建树 给定一个二叉树的层序遍历序列,空节点用#表示,例如层序序列:“abc##de#g##f###”,其对应二叉树如下图所示: 分析 创建根节点 TreeNode * rootNULL创建一个队列,用于保存将要插入的位置&#x…

数据结构初阶:算法的时间复杂度和空间复杂度

什么是数据结构? 数据结构 (Data Structure) 是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 什么是算法? 算法 (Algorithm): 就是定义良好的计算过程,他取一个或一组的值为输入&#xff0c…

Linux第85步_EXTI外部中断

1、在stm32mp157d-atk.dts文件中添加“led0”和“key0”节点 打开虚拟机上“VSCode”,点击“文件”,点击“打开文件夹”,点击“zgq”,点击“linux”,点击“atk-mp1”,点击“linux”,点击“my_l…

16.面向对象的软件测试技术

主要考点: 1、面向对象相关的基础概念;(已经在软件工程的课程中讲过,要熟悉UML图,知道类和类之间的关系,这些知识也可能结合到下午题考察) 2、面向对象的软件测试技术;(大…

代码随想录 Day29 回溯算法 491.递增子序列 46.全排列 47.全排列 II

491.递增子序列 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {if (path.size() > 1) {result.push_back(path);// 注意这里不要加return&#xff0c;要取树上…

Keil MDK 5.37 及之后版本 安装 AC5(ARMCC) 编译器详细步骤

由于 Keil 5.37 及之后版本不再默认安装 AC5(ARMCC) 编译器&#xff0c;这就会导致由 AC5 编译的工程无法正常编译&#xff0c;往往输出窗口会提示以下信息&#xff1a;*** Target ‘STM32xxxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available. —…

苹果应用上架流程解析

苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。以下是苹果上架要求的详细介绍&#xff1a;1. 应用程序的内容和功能必须符合苹果公司的规 苹果上架要求是苹果公司对于提交应用程序到苹果商店上…

基于单片机控制的高速数据采集与处理系统研究

摘要针对现有单片机的数据处理速率较低不利于高速数据采集与处理的问题,文中研究并设计基于单片机控制的高速数据采集与处理系统。在数据采集方面,使用A/D 高速采样芯片实现高速数据采集。为满足高速数据处理与存储的需要,文中使用PC 终端的IDE 接口硬盘作为系统的存储装置。…

用Python标准GUI库Tkinter绘制分形图

用Python标准GUI库Tkinter绘制分形图 分形图是一种通过迭代规则生成自相似图案的艺术形式。 分形图包括曼德勃罗集、科赫曲线、谢尔宾斯基三角等代码等。 Tkinter是Python的标准GUI库&#xff0c;可以用于创建窗口、控件和其他图形界面元素。绘制分形图像&#xff0c;如曼德…

iPhone设备中如何分析和解决应用程序崩溃日志的问题

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么&#xff1f; 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志&#xff0c;以便调查崩溃的原因。我们将展示三种不同的…

C语言—指针数组

从键盘任意输入一个整型表示的月份值&#xff0c;用指针数组编程输出该月份的英文表示&#xff0c;若输入的月份值不在1&#xff5e;12之间&#xff0c;则输出“Illegal month”。 **输入格式要求&#xff1a;"%d" 提示信息&#xff1a;"Input month number:&q…

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

背景知识 当我们探索未来的交通系统和智能交通解决方案时&#xff0c;车辆到一切&#xff08;Vehicle-to-Everything, V2X&#xff09;通信技术显得尤为重要。V2X是指在车辆与车辆&#xff08;V2V&#xff09;、车辆与基础设施&#xff08;V2I&#xff09;、车辆与行人&#x…

0 决策树基础

目录 1 绪论 2 模型 3 决策树面试总结 1 绪论 决策树算法包括ID3、C4.5以及C5.0等&#xff0c;这些算法容易理解&#xff0c;适用各种数据&#xff0c;在解决各种问题时都有良好表现&#xff0c;尤其是以树模型为核心的各种集成算法&#xff0c;在各个行业和领域都有广泛的…

优化页面加载时间:改善用户体验的关键

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、为什么页面加载时间重要&#xff1f; 二、如何减少页面加载时间&#xff1f; …

分布式文件系统DFS

定义与概述 分布式文件系统&#xff08;Distributed File System, DFS&#xff09;是一种特殊的文件系统&#xff0c;其管理的物理存储资源并非直接连接在本地节点上&#xff0c;而是通过计算机网络与各个节点相连。这些节点可以简单地理解为一台台独立的计算机。DFS将分布在网…

干部任免管理系统开发(二) 数据库表的建设

前言: 字段照搬Lrmx文件内容 数据库表字段的设计基本上就是照搬Lrmx文件内容,没有什么过多的技术含量,也可以根据自己的需要对照Lrmx文件的格式自己去定义字段了。 软件的功能截图如下&#xff1a;核心就是能够任免审批表内容读取到数据库&#xff0c;生成lrmx和word格式方便做…

Nginx 部署静态文件

部署静态文件&#xff08;如HTML、CSS和JavaScript文件&#xff09;到一个Docker容器中&#xff0c;并使用Nginx作为web服务器是一个常见的做法。这种方式可以提高应用的性能和可靠性。下面是如何使用Docker和Nginx部署静态文件的一个基本步骤&#xff1a; 第一步&#xff1a;…

Netlink与RTNetlink的简单使用

Netlink与RTNetlink的简单使用 近期项目要求通过程序去配置下发网口路由&#xff0c;所以去了解了一下netlink机制。 一、netlink通信机制 netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 目前&a…