当前位置: 首页 > news >正文

数据结构——绪论

一、绪论

(一)基本概念

数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。

数据对象:数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构

数据结构三要素:

1、逻辑结构

结构定义中的“关系”描述的是数据元素之间的逻辑关系,因此又称为数据的逻辑结构

根据数据元素之间关系的不同特性,通常有下列4类基本结构:

  • 集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。

  • 线性结构:结构中的数据元素之间存在一个对一个的关系。除了第一个元素,所有元素都有唯一的前驱;除了最后一个元素,所有元素都有唯一后继。

  • 树形结构:结构中的数据元素之间存在一个对多个的关系

  • 图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系

2、数据的运算

针对于某种逻辑结构,结合实际需求,定义基本运算。

3、物理结构(存储结构)

数据结构在计算机中的表示称为数据的物理结构,又称为存储结构

数据元素之间的关系在计算机中有两种不同的表达式:顺序映射非顺序映射,并由此得到两种不同的存储结构:顺序存储结构链式存储结构

顺序映射:特点是接触元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

非顺序映射:特点是借助指示元素存储地址的指针表示数据元素之间的逻辑关系。

(1)顺序存储

把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

(2)链式存储

逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

(3)索引存储

在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)

(4)散列存储

根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。

4、总结

(1)若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。

(2)数据的存储结构会影响存储空间分配的方便程度

(3)数据的存储结构会影响对数据运算的速度

运算的定义是针对逻辑结构的,指出运算的功能;

运算的实现是针对存储结构的,指出运算的具体操作步骤。

数据类型和抽象数据类型

数据类型

数据类型是一个值的集合和定义在此集合上的一组操作的总称。

  • 原子类型。其值不可再分的数据类型。

  • 结构类型。其值是由若干个成分按某种结构组成的,因此是可以再分解的,并且它的成分可以是非结构的也可以是结构的。

抽象数据类型(Abstract Data Type,ADT)

抽象数据组织及与之相关的操作。

抽象数据类型的定义由一个值域和定义在该值域上的一组操作组成。若按照其值的不同特性可以分为3种:

  • 原子类型:原子类型的变量的值是不可分解的。这类抽象数据类型较少,因为一般情况下,已有的固有数据类型足以满足需求。

  • 固定聚合类型:该类型的变量,其值由确定数目的成分按某种结构组成。

  • 可变聚合类型:和固定聚合类型相比较,构成可变聚合类型“值”的成分的数目不确定。

显然,后两种类型可统称为结构类型。

(二)算法和算法分析

1、算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。一个算法还具有下列5个重要特性:

(1)有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在又穷时间内完成。

(2)确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。

(3)可行性:一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)输入:一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)输出:一个算法有一个或多个的输出,这些输出是同输入有着某些特定关系的量。

2、算法设计要求

通常设计一个“好”的算法应考虑达到以下目标:

(1)正确性:算法应当满足具体问题的需求。

(2)可读性:算法应具有良好的可读性,以帮助人们理解。

(3)健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。

(4)效率与低存储量需求:效率指的是算法执行的时间。存储量需求值算法执行过程中所需要的最大存储空间。

3、算法效率的度量

算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法:

(1)事后统计的方法

(2)事前分析估算的方法

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作:

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​T(n) = O( f(n) )

它表示随问题规模n的增大,算法执行时间的增长率和f(n) 的增长率相同,称做算法的渐近时间复杂度,简称时间复杂度

结论一:顺序执行的代码只会影响常数项,可以忽略。

结论二:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可。

结论三:如果有多层嵌套循环,只需关注最深层循环了几次。

4、算法的存储空间需求

空间复杂度:空间开销(内存开销)与问题规模n之间的关系。

空间复杂度作为算法所需存储空间的亮度,记作:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        S(n) = O( f(n) )

相关文章:

数据结构——绪论

一、绪论 (一)基本概念 数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整…...

Docker Dockerfile 语法与指令

一、简介 Docker 镜像原理、容器转成镜像 随便找个案例,进入 https://hub.docker.com/ 搜索 centos,然后随便找个版本(例如:centos7)点击一下,就会进入 centos7 的 dockerfile 文件: // 空镜像…...

【LeetCode每日一题】——566.重塑矩阵

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 566.重塑矩阵 四【题目描述】 在 MATLAB 中&…...

Manim(一款强大的数学可视化动画引擎)学习历程

相逢情便深,恨不相逢早 第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown&#xff0…...

powershell脚本写一个托盘图标

1、准备ico格式图标 star_bethlehem_icon 文件名改为star.ico 2、安装VSCode 如何下载安装VSCode 扩展:PowerShell扩展 3、创建项目 1、运行PowerShell命令 mkdir trayicon_ps1;cd trayicon_ps1;New-Item trayicon.ps1;code .2、将star.ico放入trayicon_ps1文…...

前端Vue入门-day08-vant组件库

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 vant 组件库 安装 导入 全部导入 按需导入 浏览器配饰 Viewport 布局 Rem 布局适配 vant 组件库 …...

华为OD机考--【磁盘容量排序】

■ 题目描述 【磁盘容量排序】 磁盘的容量单位常用的有M,G,T这三个等级,它们之间的换算关系为1T 1024G,1G 1024M,现在给定n块磁盘的容量, 请对它们按从小到大的顺序进行稳定排序,例如给定5…...

实现弧形切角两种方式

1、css 的 radial-gradient <view style"padding:30px; background: #ccc;"><view class"navActive"></view> </view>.navActive{width: 200px;height: 40px;background-color: #fff;color: rgb(0,63,136);position: relative;bor…...

什么是强化学习?

&#x1f4dd;什么是强化学习&#xff1f; 1. &#x1f4dd;监督&#xff0c;非监督&#xff0c;强化2. &#x1f4dd;非 i.i.d3. &#x1f4dd;强化学习基本形式4. &#x1f4dd;马尔可夫过程 &#x1f31f; 强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#x…...

如何在Linux系统上安装cpolar内网穿透

如何在Linux系统上安装cpolar内网穿透 文章目录 如何在Linux系统上安装cpolar内网穿透 cpolar作为一款体积小巧却功能强大的内网穿透软件&#xff0c;不仅能够在多种环境和应用场景中发挥巨大作用&#xff0c;还能适应多种操作系统&#xff0c;应用最为广泛的Windows、Mac OS系…...

分布式软件架构——内容分发网络

内容分发网络&#xff08;CDN&#xff0c;Content Distribution Network或Content Delivery Network&#xff09; 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现…...

【HAL库】STM32CubeMX开发----STM32F407----LAN8720A----移植FreeModbus实现ModbusTCP

前言 本次实验以 STM32F407VET6 芯片为MCU&#xff0c;使用 25MHz 外部时钟源。 以太网PHY层芯片为 LAN8720A&#xff0c;移植FreeModbus实现ModbusTCP网口通信。 具体内容参考文章&#xff1a;【HAL库】STM32CubeMX开发----STM32F407----ETHLAN8720ALWIP----ping通 本次移植…...

11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

矩阵及其运算 [ a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n ] \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \\ \end{bmatrix} ​a11​⋯am1​​⋯⋯⋯​a1n​⋯amn​​ ​ 矩阵就是二维数组&…...

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…...

实验2-3-3 求奇数分之一序列前N项和 (15 分)

实验2-3-3 求奇数分之一序列前N项和 &#xff08;15 分&#xff09; 本题要求编写程序&#xff0c;计算序列 1 1/3 1/5 … 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;精确到小数点后6位。…...

关于Android studio中的自动化测试脚本UiAutomator框架以及UiAutomatorViewer工具的使用——项目案例

加入依赖 implementation androidx.test.uiautomator:uiautomator:2.2.0创建CalcActivity页 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"...

OA办公自动化系统设计与实现(论文+源码)_kaic

摘要 随着信息化建设的日益深入&#xff0c;无论是政府还是企事业单位&#xff0c;部门之间的信息沟通与协调工作越来越重要。人们迫切需要一个能充分利用网络优势&#xff0c;并可以管理企业的各种重要信息的软件平台&#xff0c;利用该平台快速建立自己的信息网络和办公管理系…...

ansible——playbook

playbook playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook本身由以下各部分组成&#xff1a; Tasks: 任务&#xff0c;即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器&#xff0c;当某条件…...

DDS中间件设计

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下&#xff0c;这里可以看到DDS和RTPS的关系。另外缺少一部分IDL&#xff08;统一描述语言&#xff09;&#xff0c;其应该是Pub、Sub的反序列化、序列化工具。 在RT…...

aws的EC2云服务器自己操作记录

亚马逊官网有免费试用1年的服务器 以下内容参考 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo …...

【Matlab】MATLAB教程:奇异值分解SVD及实战应用(基于[U,S,V]=svd(A))

MATLAB教程:奇异值分解SVD及实战应用(基于[U,S,V]=svd(A)) 本文基于MATLAB R2020b版本编写(兼容R2018及以上所有版本),聚焦线性代数中最具实用性的运算——奇异值分解(Singular Value Decomposition,SVD),打破“奇异值分解难懂”的壁垒,从理论铺垫、函数实操、案例…...

FPGA开发效率翻倍!Quartus II 这几个隐藏设置和窗口管理技巧,你知道吗?

FPGA开发效率翻倍&#xff01;Quartus II 这几个隐藏设置和窗口管理技巧&#xff0c;你知道吗&#xff1f; 作为一名FPGA开发者&#xff0c;你是否经常在Quartus II中感到效率低下&#xff1f;界面混乱、窗口丢失、重复操作消耗大量时间&#xff1f;今天我要分享的这几个隐藏技…...

AI写专著实用攻略:4款AI工具助力,20万字专著快速成型!

学术专著写作与AI工具应用 对于学术研究人员来说&#xff0c;写一本学术专著往往不是一时的灵感&#xff0c;而是一场长达好几年的持久战。研究者需要从最开始的选题构思&#xff0c;到构建逻辑清晰的章节框架&#xff0c;接下来是逐字逐句地填充内容和校对文献引用&#xff0…...

从“羊城杯”实战案例看网络安全竞赛中的经典题型与解题思路

1. CTF竞赛中的MISC题型解析 MISC&#xff08;Miscellaneous&#xff09;在CTF竞赛中通常被称为"杂项"&#xff0c;这类题目往往考察选手的综合能力。从"羊城杯"的实战案例来看&#xff0c;MISC题目可以细分为多个子类型&#xff0c;每种类型都有其独特的解…...

洛雪音乐助手:一个界面,全网音乐,你的终极免费播放器解决方案

洛雪音乐助手&#xff1a;一个界面&#xff0c;全网音乐&#xff0c;你的终极免费播放器解决方案 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 你是否曾为了找一首歌在多个音乐…...

CKS认证-kube-bench CIS 基准测试

3. kube-bench CIS 基准测试问题&#xff1a; Context针对 kubeadm 创建的 cluster 运行 CIS 基准测试工具时&#xff0c;发现了多个必须立即解决的问题。Task通过配置修复所有问题并重新启动受影响的组件以确保新设置生效。修复针对 API服务器发现的所有以下违规行为: 新版…...

RWKV7-1.5B-G1A Java开发实战:集成SpringBoot构建智能微服务

RWKV7-1.5B-G1A Java开发实战&#xff1a;集成SpringBoot构建智能微服务 1. 为什么Java开发者需要关注RWKV7 最近在AI圈子里&#xff0c;RWKV7-1.5B-G1A这个模型引起了不小的轰动。作为一个Java开发者&#xff0c;你可能会问&#xff1a;这和我的日常工作有什么关系&#xff…...

ECC6 EC-CS 合并报表「完整配置清单」

&#xff08;纯 ECC6、经典 EC-CS、无 S/4、全事务码 SPRO 路径 必填字段 配置逻辑&#xff0c;可直接照着一步步落地实施&#xff09;前置说明模块&#xff1a;EC-CS 企业控制 - 合并系统&#xff1a;ECC6.0 EHP 全版本通用核心事务码&#xff1a;CX00N 合并总菜单、UCWB数…...

std::promise和std::future的用法

1、std::promise和std::future注意用来在线程间传递数据&#xff08;不用手工同步来传递数据&#xff09;。2、在之前通过传递引用来传递数据&#xff0c;也能达到上述效果&#xff0c;但是需要手动同步&#xff0c;否则获取到不可预测的结果。#include <iostream> #incl…...

SITS2026未公开技术纪要:为什么92%的AI编程工具在遗留系统中失效?3个架构适配公式+2个轻量改造模板

第一章&#xff1a;SITS2026案例&#xff1a;大厂AI编程工具实践 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026&#xff08;Software Intelligence & Tooling Summit 2026&#xff09;技术实践中&#xff0c;国内头部科技企业联合推出基于大模型的端到端AI编…...