数据结构基本概念和术语

news2024/9/22 5:27:20

概论

1.1 基本概念和术语

1.1.1 基本概念

计算机处理的的是数值性数据,当计算机处理用户信息表中的数据的时候,需要弄清3个问题

1.数据的逻辑结构

数据之间存在怎样的内在联系,数据中,有且只有一个是首节点/尾结点,其他节点有且只有一个相邻的位于它之前和之后的结点

2.数据的存储结构

数据在计算机的存储方式称为存储结构。在C语言中,最常见的是用结构数组来存储整个用户的信息表,每一个结构数组元素也是一个结构,用于表示信息用户的一个结点。用户信息表中相邻的结点,对应结构数组中的元素也是连续的,在这种存储方式下,逻辑相邻的结点就必须是物理相邻,被称为顺序存储,还有其他存储方式。

3.数据的运算合集

对数据的存储一定会涉及到相关的运算。在用户的信息表中,可以进行删除一个用户、增加有一个用户、查找某个用户。应该明确指出这些操作的含义。为一批数据定义的所有运算(或称操作)构成一个运算(操作)集合。

数据结构就是按照一定的逻辑结构组成的一批数据,使用某种存储方式将数据存储在计算机中,并在这些数据上定义了一个运算集合

1.1.2数据的逻辑结构(数据结构)

数据的逻辑结构是数据与数据之间存在的逻辑关系,用一个二元组来表示
$$
B=(K,R)\K代表数据(结点的有限集合),R是集合K上关系的有限集合
$$
例如:5个人,a,b,c,d,e,a是b的父亲,b是c的父亲,c是d的父亲,d是e的父亲,讨论它们之间的父子关系,可以表达为B=(K,R),其中K={a,b,c,d,e},R={r},r={<a,b>,<b,c>,<c,d>,<d,e>}.

也可以用图形表示

ki∈K,Kj∈K,<ki,kj>∈r,ki是kj的前驱,kj是ki的后继。

若某个结点没有前驱,就是开始结点;没有后继结点,就是终端结点;既不是开始也不是终端的为内部结点。

线性结构:一个前驱,一个后继

树型结构:一个前驱,多个后继

图型结构:多个前驱,多个后继

1.1.3数据的存储结构

数据的逻辑结构是独立于计算机的,与在计算机中的存储是无关的,要对数据进行处理,就必须对数据进行存储,数据的存储结构主要有4种存储方式

(1)顺序存储

通常存储线性结构的数据,使逻辑相邻的结点一定是物理位置相邻

(2)链式存储

给每一个结点附加一个指针段,指的是该结点的后继存储地址,一个结点可以有一个后继,也可以有多个后继,所以可以有一个指针域,也可以有多个指针,逻辑相邻的结点在存储区域中可以不是物理相邻。

(3)索引存储

线性结构中,以开始结点为索引号1,其他结点的索引号依次加1,每个结点都有唯一的索引号,根据索引号确定存储地址。

(4)散列存储

构造一个从集合K到存储区域M的函数h,定义域为K,值域为M,存储地址由h(Ki)决定

一个数据结构存储在计算机中,整个数据所占的存储空间不一定小于数据本身所占的存储空间,通常把数据本身所占的存储空间和整个数据结构所占的存储空间的大小的比值叫做存储密度,显然,数据结构的存储密度不大于1,线性结构存储密度为1,链式结构小于1。

1.2 数据类型和抽象数据类型

1.2.1数据类型

数据类型(简称类型)反映了数据的取值范围以及这类数据可以施加的运算。一个数据类型就是同一类数据的全体,是数据的一种属性,规定了数据的可变化范围,

1.2.2抽象数据类型

这是一种和表示无关的数据类型,是一个数据模型及定义在该模型的一组运算,定义一个抽象数据类型时,必须给出它的名字及运算符名,及函数名,并规定参数性质。(c++中的类支持抽象数据类型)

简言说明,就是自定义类型。

1.3算法和算法分析

解决某个问题的方法和步骤就叫做算法

特征

(1)有穷性:算法执行要在有限步内进行

(2)确定性:每个步骤是确定的,无二义性

(3)输入:可以有0个或多个输入

(4)输出:一定有输出结果

(5)可行性:每一个步骤都是可行的

1.3.1时间复杂度和空间复杂度

一个算法和优劣是从算法的执行时间和所用的存储空间两个方面衡量的。

(1)时间复杂度

由于算法在不同机器上执行时间不同,资源占用情况也不一样。所以时间复杂度使用算法执行过程中的基本操作次数来衡量的,使用大O渐进表示(O()),在评价算法的时间复杂度时,只关系算法的本质区别,不考虑细小区别。

常数阶 31 O(1)

线性阶 2*n+17 O(n)

平方阶 n^2+10 O(n^2)

立方阶 2*n^3 O(n^3)

常见的算法时间复杂度

O(1)<O(log n)<O(n)<O(n*log n)<O(n2)<O(n3)<……<O(2^n)

(2)空间复杂度

除了数据以外附加的存储空间,度量方法与时间复杂度类似

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

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

相关文章

Squish 8.0现已发布

本文翻译自&#xff1a;Squish 8.0 Available Now 原文作者&#xff1a;Qt Group质量保证高级解决方案工程师Katarina Behrens 审校&#xff1a;Jinjing Li Squish团队非常激动地宣布Squish GUI Tester 8.0现已发布。对于自动化跨平台GUI测试而言&#xff0c;这是一款软件质量…

41-设计规则:线宽规则

1.设置电源线规则和信号线规则 2.设置信号线规则 3.设置电源线规则 如果未生效&#xff1a; ① 提升优先级即可。 ②查看使能选项有没有勾选

2024医疗器械网络交易服务第三方平台备案申请流程

前几天&#xff0c;小编给大家分享了药品网络交易第三方平台备案申请流程&#xff0c;好多客户就来问&#xff0c;那医疗器械网络交易服务第三方平台备案怎么办理呢&#xff1f; 今天&#xff0c;就给大家好好聊聊医疗器械网络交易服务第三方平台备案申请流程&#xff0c;供大…

Xilinx课程,就这么水灵灵地上线了~

如果你想了解&#xff1a; 如何利用精通流水线&#xff08;Pipeline&#xff09;技术&#xff0c;让电路设计效率倍增&#xff1f; 如何掌握利用性能基线指导设计流程的方法&#xff1f; 如何理解集成电路设计中的UltraFast Design Methodology Implementation设计方法学中的…

C++拾趣——编译器预处理宏__COUNTER__的应用场景

大纲 生成唯一标识符调试信息宏展开模板元编程代码 在C中&#xff0c;__COUNTER__是一个特殊的预处理宏&#xff0c;它主要被用来生成唯一的整数标识符。这个宏是由一些编译器&#xff08;如GCC和Visual Studio&#xff09;内置支持的&#xff0c;而不是C标准的一部分。它的主要…

《AI视频类工具之五——​ 开拍》

一.简介 官网:开拍 - 用AI制作口播视频用AI制作口播视频https://www.kaipai.com/home?ref=ai-bot.cn 开拍是一款由美图公司在2023年推出,利用AI技术制作的短视频分享应用。这款工具通过AI赋能,为用户提供了从文案创作、视频拍摄到视频剪辑、包装的一站式解决方案,极大地…

Using the ST-LINK/V2-1 to program and debug the STM32 on board

1. Using the ST-LINK/V2-1 to program and debug the STM32 on board To program the STM32 on the board, plug in the two jumpers on CN2 要对板上的STM32进行编程&#xff0c;请插入CN2上的两个跳线 2. 单片机供电 标有IDD的跳线JP6用于测量STM32微控制器的功耗 拆下跳…

UE5学习笔记14-动画的混合空间

零、我看视频中使用的是UE5.0左右的版本&#xff0c;我使用的是UE5.4&#xff0c;5.4中创建混合空间&#xff0c;没有看见有2D和3D混合动画空间的区分&#xff0c;具体的UE5如何创建2D的动画暂时不知道(我感觉现在创建的是3D的动画) 一、创建混合空间 1.我将所有的动画蓝图和动…

vue用户管理、角色管理和部门管理展示

1、用户和角色一对多&#xff0c;用户和部门多对多 2、用户管理 编辑用户时部门层级展示 角色-下拉框展示 <template><div class"s"><!-- 操作按钮 --><div class"shang"><el-input v-model"searchText" placeholde…

EXTI外部中断之对射式红外传感器计次应用案例

系列文章目录 STM32中断系统之EXTI外部中断 文章目录 系列文章目录前言一、应用案例简介二、电路接线图三、应用案例代码四、应用案例分析4.1 配置外部中断4.1.1 配置RCC时钟4.1.2 配置GPIO4.1.3 配置AFIO4.1.4 配置EXTI4.1.5 配置NVIC 4.2 编写中断函数 前言 提示&#xff1…

泛微OA系统走进腾讯大厦

企业信息化、数字化、网络化、智能化的快速发展带来了无限可能&#xff0c;但同时也带来了系统安全的严峻挑战。您准备好应对了吗? 上月由腾讯安全部、泛微联合举办的“OA 系统安全防护与腾讯iOA 零信任安全策略客户会”在腾讯滨海大厦成功举办&#xff0c;本次活动邀请了60位…

拆开一个断了FPC的墨水屏,是不是像OLED一样驱动芯片在里面

可对比查看一个OLED的屏幕拆解 拆解理由 第一次焊接驱动板时的fpc上下接问题&#xff0c;但焊接到板子上并没有达到正常的显示效果。PI补强也被撕下来。后来拔下来后发现金手指断裂。本来想用一个fpc排线连接在一起&#xff0c;但后来发现并没有达到理想效果&#xff0c;飞线…

【Python学习-UI界面】PyQt5 小部件14-QDock 子窗口

可停靠窗口是一个子窗口&#xff0c;可以保持浮动状态或附加到主窗口的指定位置。 QMainWindow类的主窗口对象保留了一块区域供可停靠窗口使用。该区域位于中央窗口部件周围。 可停靠窗口可以在主窗口内移动&#xff0c;也可以被取消停靠并由用户移动到新的区域。 样式如下: …

MinIO DataPOD 目标锁定 GPU Direct 并行文件系统

MinIO 推出针对 AI 应用的 DataPOD 参考架构 MinIO 设计了一种旨在为 AI 训练提供数据的 exascale DataPOD 参考架构。这家开源对象存储软件供应商正将其可扩展至100 PiB&#xff08;即大约112.6 PB&#xff09;的单元定位为一种替代方案&#xff0c;以取代使用 GPU Direct 技…

新中地2402期GIS特训营学员圆满结业,解锁GIS开发的无限可能!

GIS开发了解 24年8月5日&#xff0c;新中地GIS开发特训营2402期学员迎来了属于自己的结业典礼。 初入特训营&#xff0c;教与学双向奔赴 从24年3月4日开班&#xff0c;面对全新的领域&#xff0c;大家新中既有对未知的忐忑&#xff0c;更有对掌握GIS开发技术的期待 在本期学员…

车辆车载客流统计系统解决方案

车辆车载客流统计系统是一种用于实时监测和分析乘客流量的技术解决方案&#xff0c;它可以帮助公交公司、地铁运营商等交通管理部门优化运营计划、提高服务效率和乘客满意度。以下是一个详细的车载客流统计系统解决方案&#xff1a; 一、系统组成 传感器与设备 摄像头&#xf…

C库函数signal()信号处理

signal()是ANSI C信号处理函数&#xff0c;原型如下&#xff1a; #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler&#xff0c;该handler为SIG_IGN&#xff…

脊髓损伤治疗方法和需要那些营养

脊髓损伤作为一种严重的神经系统损伤&#xff0c;其治疗与康复一直是医学界关注的重点。在中医领域&#xff0c;针对脊髓损伤的治疗有着独特的理论和方法&#xff0c;旨在通过调节人体内部环境&#xff0c;促进受损神经的修复与再生。以下将从中医缓解方法与营养支持两个方面进…

Velero 快速上手:使用 Velero 实现 Kubernetes 集群备份与迁移

一、veloro 简介 Velero 是vmware开源的一个云原生的灾难恢复和迁移工具&#xff0c;它本身也是开源的,采用Go语言编写&#xff0c;可以安全的备份、恢复和迁移Kubernetes集群资源数据&#xff1b;Velero 是西班牙语意思是帆船&#xff0c;非常符合Kubernetes社区的命名风格&a…

【Python快速入门和实践017】Python常用脚本-根据文件后缀对其进行分类保存

一、功能介绍 这段代码的功能是将源文件夹中的文件按照它们的文件扩展名分类并移动到不同的子文件夹中。步骤如下&#xff1a; 定义函数&#xff1a;move_files_by_extension函数接收两个参数&#xff1a; source_folder&#xff1a;源文件夹路径。destination_folder&#xff…