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

数据结构【绪论】

数据结构入门级

第一章绪论

什么是数据结构?什么是数据类型?

程序=数据结构+算法

在这里插入图片描述

一、基本概念:

  1. 数据:指所有能被计算机处理的,无论图、文字、符号等。
  2. 数据元素数据的基本单位,通常作为整体考虑;由若干个数据项组成(数据项是数据最小的单位)。
  3. 数据对象:是性质相同的数据元素的集合,数据的一个子集。(int类型、char类型...)

在这里插入图片描述

二、数据结构(三要素):

  1. 逻辑结构:指数据之间逻辑关系得整体,对数据之间关系的描述,与数据存储结构无关,与数据元素本身的内容和形式无关。
    • 集合:结构中数据元素除了“同属于一个集合”外,无其他关系;
    • 线性结构:元素都是一对一的关系;
    • 树形结构:元素存在一对多的关系;
    • 网状或图状结构:元素存在多对多的关系。
  • 存储结构(物理结构):描述数据具体在内存中的存储,可以理解为计算机的硬件设备,看得见摸得着;
    • 顺序存储:把逻辑上相邻的结点存储在物理位置上相邻的存储单位中,一般借助计算机程序设计语言(C/C++中的数组)来描述的;
    • 链式存储:不要求在逻辑位置相邻的结点在物理位置也相邻,结点之间的逻辑关系是用附加的指针(指向内存地址的工具)字段表示的(C/C++中的指针类型)。
    • 索引存储:建立附加索引表来标识结点地址;
      • 索引项形式<关键字,地址>,关键字:标识唯一一个结点;地址:指向结点的指针。
    • 散列存储:根据结点的关键字通过散列函数直接计算出该结点的存储地址,顺序存储的扩展。
  • 数据运算:增删改查,建立和消除。 (数组没有插入和删除)
  • PS:对于两种不同的数据结构来说,它们的物理结构和物理结构完全由可能相同,数据的运算不相同即可。

    三、算法与算法的评价

    1. 概念:算法是由基本运算及规定的运算顺序所构成的完成的解题步骤,是按照要求设计好的有限的确切的序列,简单来说就是问题求解步骤的描述。
    2. 算法的五个特性:
      • 有穷性:算法在执行有限的步骤(在可接受的时间内完成)之后,自动结束,不会出现无限循环;
      • 确定性:算法每一步具有确定的含义,不会出现二义性
      • 可行性:算法中描述的操作都是通过已实现的基本运算执行有限次来实现。
      • 输入:一个算法有个或个输入;
      • 输出个或个输出。
    3. 好算法的标准:
      • 正确性:应满足具体问题的需求;
      • 可读性:应容易阅读和交流,有助于理解和修改算法;
      • 健壮性:具有容错处理;
      • 通用性:具有一般性,对一般的数据集合都成立。
    4. 算法的设计要求:
      • 事后统计法:比较不同算法对同组输入数据的运行处理时间;
        • 缺陷:为获得不同算法的运行时间必须编写相应代码,实施困难且缺陷多;
        • 优点:非常直观。
      • 事前分析估算:一句统计方法对算法效率进行估算;
        • 影响效率因素:①算法采用的策略和方法;②问题的输入规模;③编译器所产生的代码;④计算机的执行速度。
    5. 算法效率的度量:
      • 时间复杂度(渐进时间复杂度):通过算法中最基本语句执行次数得数量级来确定,常用最深层循环内的语句中的原操作的执行频度重复的次数)来表示,指问题规模。
        • 例如: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)。
    6. 例题1:执行以下算法的时间复杂度为:O(log₂n)
      • void fun(int n){
      • int i = 1;
      • while(i <= n)
      • i = i * 2; 假设它执行m次,那么每次就是2ᵐ;2ᵐ<=n;即m<=log₂n
      • }
    7. 递归:程序调用自身的编程技巧称为递归,它在计算机中是借助栈来实现的,可以通过简单的函数调用来完成。
      • 如计算机阶乘的定义(5! = 5 * 4! );
      • 斐波那契数列:0,1,1,2,3,5,8...它后一个数是前两个数的和;
      • 递归思想:一个数是前两个数的和;
      • 递归表达式:f(n)=n n<=1;=f(n-1)+f(n-2) n>1;
    PS:算法和结构是不同的概念。

     
    在这里插入图片描述

相关文章:

数据结构【绪论】

数据结构入门级 第一章绪论 什么是数据结构&#xff1f;什么是数据类型&#xff1f; 程序数据结构算法 一、基本概念&#xff1a; 数据&#xff1a;指所有能被计算机处理的&#xff0c;无论图、文字、符号等。数据元素&#xff1a;数据的基本单位&#xff0c;通常作为整体考…...

掌握无人机遥感数据预处理的全链条理论与实践流程、典型农林植被性状的估算理论与实践方法、利用MATLAB进行编程实践(脚本与GUI开发)以及期刊论文插图制作等

目录 专题一 认识主被动无人机遥感数据 专题二 预处理无人机遥感数据 专题三 定量估算农林植被关键性状 专题四 期刊论文插图精细制作与Appdesigner应用开发 近地面无人机植被定量遥感与生理参数反演 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多…...

Angular中组件设计需要注意什么?

在 Angular 中设计组件时&#xff0c;有几个重要的方面需要注意。以下是一些建议&#xff1a; 1、单一职责原则&#xff1a;确保每个组件只负责一个明确定义的任务。这有助于保持组件简单、可维护&#xff0c;并且易于重用。 2、组件通信&#xff1a;了解组件之间的通信方式。…...

电容触摸屏(TP)的工艺结构

液晶显示屏(LCM),触摸屏(TP) “GG、GP、GF”这是结构分类&#xff0c;第一个字母表面材质&#xff08;又称为上层&#xff09;&#xff0c;第二个字母是触摸屏的材质&#xff08;又称为下层&#xff09;&#xff0c;两者贴合在一起。 G玻璃&#xff0c;FFILM&#xff0c;“”贴…...

Qt小妙招:如何在可执行文件生成后,在pro文件中添加其他命令操作?

问题描述&#xff1a; 场景1&#xff1a;我的可执行文件设置生成路径为某个最终目录的bin目录下&#xff0c;当我要修改某些config.ini或者xxx.json,或者一些qss&#xff0c;css文件的时候&#xff0c;我想直接在构建的时候&#xff0c;Qtcreator帮我直接拷贝过去&#xff0c;…...

做好防雷检测的意义和作用

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

计算机启动过程uefi+gpt方式

启动过程&#xff1a; 一、通电 按下开关&#xff0c;不用多说 二、uefi阶段 通电后&#xff0c;cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 &#xff08;一&#xff09;uefi介绍 UEFI&#xff0c;全称Unified Extensible Firmware Interface&am…...

探索容器镜像安全管理之道

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

【MySQL】内置函数

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《零基础入门MySQL》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;函…...

使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境

工具 make&#xff1a;Windows中没有make&#xff0c;但是可以通过安装MinGW或者MinGW-w64&#xff0c;得到make。gcc-arm-none-eabi&#xff1a;建议最新版&#xff0c;防止调试报错OpenOCDvscodecubeMX VSCODE 插件 Arm Assembly&#xff1a;汇编文件解析C/C&#xff1a;c…...

图数据库Neo4j学习二——cypher基本语法

1命名规范 名称应以字母字符开头&#xff0c;不以数字开头&#xff0c;名称不应包含符号&#xff0c;下划线除外可以很长&#xff0c;最多65535( 2^16 - 1) 或65534字符&#xff0c;具体取决于 Neo4j 的版本名称区分大小写。:PERSON和:Person是:person三个不同的标签&#xff…...

ChatGPT:人工智能交互的未来之光

一、ChatGPT&#xff1a;开启自然语言交流新纪元 ChatGPT 是基于 GPT&#xff08;生成式预训练&#xff09;技术的最新版本&#xff0c;它采用深度学习模型&#xff0c;通过在大规模文本数据上的预训练来理解自然语言&#xff0c;并生成具有连贯性和合理性的回复。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&#xff1a;安装1. 源码安装&#xff08;CENTOS&#xff09; 2.999:可能会出现得问题1. 编译出错 1&#xff1a;安装 1. 源码安装&#xff08;CENTOS&#xff09; 官方下载源码包 wget https://download.redis.io/redis-stable.tar.gz # 安装依赖 yum install gcc解压…...

vue+Element项目中v-for循环+表单验证

如果在Form 表单里有通过v-for动态生成&#xff0c;如何设置验证呢&#xff1f; <el-form ref"ruleFormRef" :model"ruleForm" status-icon :rules"rules" label-width"120px"class"demo-ruleForm" hide-required-aster…...

Day 66-68 主动学习之ALEC

代码&#xff1a; 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 遵照如下输出选项&#xff0c;另存为tif格式文件时&#xff0c;选择正确输出便是300dpi以上 2. matlab 文件选项选中导出设置&#xff0c;在渲染中选择dpi为600&#xff0c;导出图片即可&#xff0c;科研建议选择tif格式文件 3.ppt 打开注册表&#xff0c;winr键…...

科技UI图标的制作

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

微信小程序将接口返回的文件流预览导出Excel文件并转发

把接口url替换就可以用了 exportExcel () {wx.request({url: importMyApply, //这个地方是你获取二进制流的接口地址method: POST,responseType: "arraybuffer", //特别注意的是此处是请求文件流必须加上的属性&#xff0c;不然你导出到手机上的时候打不开&#xff…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...