数据结构【绪论】
数据结构入门级
第一章绪论
什么是数据结构?什么是数据类型?程序=数据结构+算法

一、基本概念:
- 数据:指所有能被计算机处理的,无论图、文字、符号等。
- 数据元素:数据的基本单位,通常作为整体考虑;由若干个数据项组成(数据项是数据最小的单位)。
- 数据对象:是性质相同的数据元素的集合,数据的一个子集。(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", //特别注意的是此处是请求文件流必须加上的属性,不然你导出到手机上的时候打不开ÿ…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
