数据结构【绪论】
数据结构入门级
第一章绪论
什么是数据结构?什么是数据类型?程序=数据结构+算法
一、基本概念:
- 数据:指所有能被计算机处理的,无论图、文字、符号等。
- 数据元素:数据的基本单位,通常作为整体考虑;由若干个数据项组成(数据项是数据最小的单位)。
- 数据对象:是性质相同的数据元素的集合,数据的一个子集。(int类型、char类型...)
二、数据结构(三要素):
- 逻辑结构:指数据之间逻辑关系得整体,对数据之间关系的描述,与数据存储结构无关,与数据元素本身的内容和形式无关。
- 集合:结构中数据元素除了“同属于一个集合”外,无其他关系;
- 线性结构:元素都是一对一的关系;
- 树形结构:元素存在一对多的关系;
- 网状或图状结构:元素存在多对多的关系。
- 存储结构(物理结构):描述数据具体在内存中的存储,可以理解为计算机的硬件设备,看得见摸得着;
- 顺序存储:把逻辑上相邻的结点存储在物理位置上相邻的存储单位中,一般借助计算机程序设计语言(C/C++中的数组)来描述的;
- 链式存储:不要求在逻辑位置相邻的结点在物理位置也相邻,结点之间的逻辑关系是用附加的指针(指向内存地址的工具)字段表示的(C/C++中的指针类型)。
- 索引存储:建立附加索引表来标识结点地址;
- 索引项形式<关键字,地址>,关键字:标识唯一一个结点;地址:指向结点的指针。
- 散列存储:根据结点的关键字通过散列函数直接计算出该结点的存储地址,顺序存储的扩展。
- 数据运算:增删改查,建立和消除。 (数组没有插入和删除)
- PS:对于两种不同的数据结构来说,它们的物理结构和物理结构完全由可能相同,数据的运算不相同即可。
三、算法与算法的评价
- 概念:算法是由基本运算及规定的运算顺序所构成的完成的解题步骤,是按照要求设计好的有限的确切的序列,简单来说就是问题求解步骤的描述。
- 算法的五个特性:
- 有穷性:算法在执行有限的步骤(在可接受的时间内完成)之后,自动结束,不会出现无限循环;
- 确定性:算法每一步具有确定的含义,不会出现二义性;
- 可行性:算法中描述的操作都是通过已实现的基本运算执行有限次来实现。
- 输入:一个算法有零个或多个输入;
- 输出:一个或多个输出。
- 好算法的标准:
- 正确性:应满足具体问题的需求;
- 可读性:应容易阅读和交流,有助于理解和修改算法;
- 健壮性:具有容错处理;
- 通用性:具有一般性,对一般的数据集合都成立。
- 算法的设计要求:
- 事后统计法:比较不同算法对同组输入数据的运行处理时间;
- 缺陷:为获得不同算法的运行时间必须编写相应代码,实施困难且缺陷多;
- 优点:非常直观。
- 事前分析估算:一句统计方法对算法效率进行估算;
- 影响效率因素:①算法采用的策略和方法;②问题的输入规模;③编译器所产生的代码;④计算机的执行速度。
- 事后统计法:比较不同算法对同组输入数据的运行处理时间;
- 算法效率的度量:
- 时间复杂度(渐进时间复杂度):通过算法中最基本语句执行次数得数量级来确定,常用最深层循环内的语句中的原操作的执行频度(重复的次数)来表示,指问题规模。
- 例如:for(i = 0; i < 100; i++); 循环了100次;
- 表示时间复杂度的阶:O(1)常见时间阶;O(n)线性时间阶;O(logn)对数时间阶;O(nlogn)线性对数时间阶;
- 定理:A(n)=aₘnᵐ+aₘ₋₁nᵐ⁺¹+....+a₁n+a₀是一个m次多项式,则A(n)=O(nᵐ);也就是只取最高次的;
- 最坏复杂度、平均复杂度、最好时间复杂度;
- 加法规则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n))),也就是取最大的,并列关系;
- 乘法规则:T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O((f(n)*g(n))),两相乘,嵌套关系;
- 常见:O(1)<O(log₂n)<O(nlog₂n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)<O(nⁿ);
- 空间复杂度:通过计算算法所需的存储空间实现;
- 存储空间一般有:①指令常数变量所占的存储空间;②输入数据所占的存储空间;③辅助空间。
- 一维数组a[n]:空间复杂度O(n);
- 二维数组a[n][m]:空间复杂度O(n*m);
- 算法的原地工作是指所需的辅助空间,是常量O(1)。
- 时间复杂度(渐进时间复杂度):通过算法中最基本语句执行次数得数量级来确定,常用最深层循环内的语句中的原操作的执行频度(重复的次数)来表示,指问题规模。
- 例题1:执行以下算法的时间复杂度为:O(log₂n)
void fun(int n){
- int i = 1;
- while(i <= n)
- i = i * 2; 假设它执行m次,那么每次就是2ᵐ;2ᵐ<=n;即m<=log₂n
}
- 递归:程序调用自身的编程技巧称为递归,它在计算机中是借助栈来实现的,可以通过简单的函数调用来完成。
- 如计算机阶乘的定义(5! = 5 * 4! );
- 斐波那契数列:0,1,1,2,3,5,8...它后一个数是前两个数的和;
- 递归思想:一个数是前两个数的和;
- 递归表达式:f(n)=n n<=1;=f(n-1)+f(n-2) n>1;
相关文章:

数据结构【绪论】
数据结构入门级 第一章绪论 什么是数据结构?什么是数据类型? 程序数据结构算法 一、基本概念: 数据:指所有能被计算机处理的,无论图、文字、符号等。数据元素:数据的基本单位,通常作为整体考…...
掌握无人机遥感数据预处理的全链条理论与实践流程、典型农林植被性状的估算理论与实践方法、利用MATLAB进行编程实践(脚本与GUI开发)以及期刊论文插图制作等
目录 专题一 认识主被动无人机遥感数据 专题二 预处理无人机遥感数据 专题三 定量估算农林植被关键性状 专题四 期刊论文插图精细制作与Appdesigner应用开发 近地面无人机植被定量遥感与生理参数反演 更多推荐 遥感技术作为一种空间大数据手段,能够从多时、多…...
Angular中组件设计需要注意什么?
在 Angular 中设计组件时,有几个重要的方面需要注意。以下是一些建议: 1、单一职责原则:确保每个组件只负责一个明确定义的任务。这有助于保持组件简单、可维护,并且易于重用。 2、组件通信:了解组件之间的通信方式。…...

电容触摸屏(TP)的工艺结构
液晶显示屏(LCM),触摸屏(TP) “GG、GP、GF”这是结构分类,第一个字母表面材质(又称为上层),第二个字母是触摸屏的材质(又称为下层),两者贴合在一起。 G玻璃,FFILM,“”贴…...
Qt小妙招:如何在可执行文件生成后,在pro文件中添加其他命令操作?
问题描述: 场景1:我的可执行文件设置生成路径为某个最终目录的bin目录下,当我要修改某些config.ini或者xxx.json,或者一些qss,css文件的时候,我想直接在构建的时候,Qtcreator帮我直接拷贝过去,…...

做好防雷检测的意义和作用
防雷检测是指对雷电防护装置的性能、质量和安全进行检测的活动,是保障人民生命财产和公共安全的重要措施。我国对防雷检测行业有明确的国家标准和管理办法,要求从事防雷检测的单位和人员具备相应的资质和能力,遵守相关的技术规范和规程&#…...

计算机启动过程uefi+gpt方式
启动过程: 一、通电 按下开关,不用多说 二、uefi阶段 通电后,cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 (一)uefi介绍 UEFI,全称Unified Extensible Firmware Interface&am…...

探索容器镜像安全管理之道
邓宇星,Rancher 中国软件架构师,7 年云原生领域经验,参与 Rancher 1.x 到 Rancher 2.x 版本迭代变化,目前负责 Rancher for openEuler(RFO)项目开发。 最近 Rancher v2.7.4 发布了,作为一个安全更新版本,也…...

【MySQL】内置函数
🌠 作者:阿亮joy. 🎆专栏:《零基础入门MySQL》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉函…...
使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境
工具 make:Windows中没有make,但是可以通过安装MinGW或者MinGW-w64,得到make。gcc-arm-none-eabi:建议最新版,防止调试报错OpenOCDvscodecubeMX VSCODE 插件 Arm Assembly:汇编文件解析C/C:c…...

图数据库Neo4j学习二——cypher基本语法
1命名规范 名称应以字母字符开头,不以数字开头,名称不应包含符号,下划线除外可以很长,最多65535( 2^16 - 1) 或65534字符,具体取决于 Neo4j 的版本名称区分大小写。:PERSON和:Person是:person三个不同的标签ÿ…...
ChatGPT:人工智能交互的未来之光
一、ChatGPT:开启自然语言交流新纪元 ChatGPT 是基于 GPT(生成式预训练)技术的最新版本,它采用深度学习模型,通过在大规模文本数据上的预训练来理解自然语言,并生成具有连贯性和合理性的回复。ChatGPT 是一…...
128最长连续数组
题目描述 最长连续序列 https://leetcode.cn/problems/longest-consecutive-sequence/class Solution {public:int longestConsecutive(vector<int>& nums) {unordered_set<int> st(...

redis 1
shell 1:安装1. 源码安装(CENTOS) 2.999:可能会出现得问题1. 编译出错 1:安装 1. 源码安装(CENTOS) 官方下载源码包 wget https://download.redis.io/redis-stable.tar.gz # 安装依赖 yum install gcc解压…...

vue+Element项目中v-for循环+表单验证
如果在Form 表单里有通过v-for动态生成,如何设置验证呢? <el-form ref"ruleFormRef" :model"ruleForm" status-icon :rules"rules" label-width"120px"class"demo-ruleForm" hide-required-aster…...

Day 66-68 主动学习之ALEC
代码: package dl;import java.io.FileReader; import java.util.*; import weka.core.Instances;/*** Active learning through density clustering.*/ public class Alec {/*** The whole dataset.*/Instances dataset;/*** The maximal number of queries that …...
local-path-provisioner与pvc本地磁盘挂载helm部署
1.helm拉取安装包 helm repo add containeroo https://charts.containeroo.ch helm pull containeroo/local-path-provisioner --version 0.0.19 tar -zxvf local-path-provisioner-0.0.19.tgz cd local-path-provisioner mv values.yaml values.yaml.back grep -v "#&qu…...

Visio/PPT/Matlab输出300dpi以上图片【满足标准投稿要求】
1. visio 遵照如下输出选项,另存为tif格式文件时,选择正确输出便是300dpi以上 2. matlab 文件选项选中导出设置,在渲染中选择dpi为600,导出图片即可,科研建议选择tif格式文件 3.ppt 打开注册表,winr键…...

科技UI图标的制作
科技UI图标的制作,效果图如下: 一、新建合成 1、新建合成,命名为合成1,参数设置如下: 2、新建纯色,命名为分形 二、添加分形杂色 1、添加分形杂色 为纯色层“分形”,添加分形杂色,…...

微信小程序将接口返回的文件流预览导出Excel文件并转发
把接口url替换就可以用了 exportExcel () {wx.request({url: importMyApply, //这个地方是你获取二进制流的接口地址method: POST,responseType: "arraybuffer", //特别注意的是此处是请求文件流必须加上的属性,不然你导出到手机上的时候打不开ÿ…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...

Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用
1 论文信息 FBRT-YOLO(Faster and Better for Real-Time Aerial Image Detection)是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架,发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究,重点解决…...