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

王道数据结构 学习笔记

第一章 绪论

1.1数据结构的基本概念

1.1.1 数据结构在学什么

人类社会的发展,迄今经历了和经历着三个浪潮:第一次浪潮为农业阶段,从约1万年前开始;第二次浪潮为工业阶段,从17世纪未开始;第三次浪潮为正在到来的信息化阶段

数据结构在学什么?

  • 如何用程序代码把现实世界的问题信息化
  • 如何用计算机高效地处理这些信息从而创造价值

1.1.2数据结构的基本概念

数据

数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。(二进制0和1)

数据元素、数据项

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

数据结构、数据对象

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

数据的三要素

逻辑结构、物理结构(存储结构)、数据的运算

逻辑结构:集合、线性结构、树形结构、图状结构(网状结构)

集合:烤盘中的各种食材没有相对应的关系,但都属于烤盘这一个集合。

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

树形结构:数据元素之间是一对多的关系

图结构:数据元素之间是多对多的关系

物理结构:顺序存储、链式存储、索引存储、散列存储

顺序存储链式存储都是线性结构

顺序存储:在计算机的物理内存里面用数据元素的存储位置相邻,来表示各个数据元素逻辑上的这种相邻的关系。要求给各个数据元素分配的是一片连续的存储空间。

链式存储:逻辑上相邻的各个元素在物理位置上可以不相邻,而是借助这个元素存储地址的指针来表示,它的下一个元素到底是在什么位置存储,各个元素之间的先后关系是用指针来表示的,不要求各个数据元素它的存放位置在物理上相邻

索引存储:会建立一张索引表,在索引表当中记录各个数据元素的这种先后次序,同时也要记录每一个元素,它实际的存放地址,采用索引存储的话就需要在内存中在消耗一些存储空间来专门的存放索引表。

散列存储:会根据数据元素的关键字直接计算出该元素的存储地址,又称为哈希存储。

数据的运算:

用数学化的语言定义了某一种数据的逻辑结构和对这种数据的运算,而只有当我们要实际的用计算机去实现这种数据结构的时候,才需要考虑到我们到底要采用那种存储结构,所以ADT并不讨论具体要采用那种存储结构,

数据对象是数据的子集,数据对象是具有相同性质的数据元素组成,而每一个数据元素中又包含一个一个的数据项。

当我们在讨论数据结构的时候,更关注的是各个元素他们之间在逻辑上存在的关系,同时还需要定义对这些数据元素应该要实现的哪些运算,

1.2算法和算法评价

1.2.1 算法的基本概念

算法的特性

算法的特质

不能将错就错

设计一个好的程序,就是要设计一个合适的好的数据结构以及高效率的算法。数据结构就是我们要处理的一些信息,而算法就是处理这些信息的一个具体的。对于我们来说,我们就是要用代码的方式来描述处理信息的步骤。

1.2.2 算法的时间复杂度

算法的时间复杂度就是算法的时间开销。

让这段代码让机器跑一下,来看他的运行时间是多少,就可以统计出一个算法的时间开销,这就是事后统计的方式。但是用这种方法来评价一个代码是存在一些问题的,程序代码的执行速度和机器性能是有关的。算法的时间开销还和实现这个算法所采用的编程语言是有关系的,越高级的语言执行效率越低。

算法的时间复杂度就是在算法运行之前就能预估出一个算法的时间开销和问题规模的关系

1.2.3 算法的空间复杂度

我们在分析一个算法的空间复杂度的时候,只需要关注,它所需要的存储空间大小和问题规模相关的这些变量就可以了,


文章转载自:

http://ZTDLpdLn.rccbt.cn
http://w8vwN2ib.rccbt.cn
http://okS3S1NT.rccbt.cn
http://Pddlw9ug.rccbt.cn
http://FQORHb95.rccbt.cn
http://3ZUp8gHo.rccbt.cn
http://hr20se7y.rccbt.cn
http://SpGiRz2j.rccbt.cn
http://GRmnrcjZ.rccbt.cn
http://k8XPGwKs.rccbt.cn
http://hRN87hcz.rccbt.cn
http://KLvU5wcU.rccbt.cn
http://9A3YjaSC.rccbt.cn
http://ZW811LPv.rccbt.cn
http://TSvoievu.rccbt.cn
http://0c9Xbf7y.rccbt.cn
http://dcGWnZx4.rccbt.cn
http://NILQErOx.rccbt.cn
http://YX3K5TEb.rccbt.cn
http://9vdaEDWw.rccbt.cn
http://BXu99723.rccbt.cn
http://fBaJluhV.rccbt.cn
http://EPMJDb2C.rccbt.cn
http://BhKd5z5R.rccbt.cn
http://xU6pxHbD.rccbt.cn
http://PrltNcVO.rccbt.cn
http://6phFZMa3.rccbt.cn
http://fUnUn3dU.rccbt.cn
http://YlEspyOC.rccbt.cn
http://CqIHXpAC.rccbt.cn
http://www.dtcms.com/a/381446.html

相关文章:

  • 畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
  • 在springboot中使用mock做controller层单元测试,请求示例包括GET(带参数)、POST(带请求头)、下载文件、上传文件等
  • Kafka 线上问题排查完整手册
  • 数据结构中的排序秘籍:从基础到进阶的全面解析
  • NFS 服务器 使用
  • Zookeeper:分布式协调服务
  • 在 R 语言里,`$` 只有一个作用 按名字提取“列表型”对象里的单个元素 对象 $ 名字
  • 【pure-admin】项目登录模块分析
  • 关于Redis不同序列化压缩性能的对比
  • window显示驱动开发—VidPN 对象和接口
  • 系统架构设计师——【2024年上半年案例题】真题模拟与解析(二)
  • 突破性能瓶颈:基于腾讯云EdgeOne的AI图片生成器全球加速实践
  • JavaScript事件机制与性能优化:防抖 / 节流 / 事件委托 / Passive Event Listeners 全解析
  • 文章目录集合
  • 海外短剧系统开发:技术架构与性能优化实践
  • Windsurf 插件正式登陆 JetBrains IDE:让 AI 直接在你的 IDE 里“打工”
  • 西门子 S7-200 SMART PLC 核心指令详解:从移位、上升沿和比较指令到流水灯控制程序实战
  • 【重要通知】ChatGPT Plus将于9月16日调整全球充值定价,低价区将被弃用,开发者如何应对?
  • 跨省跨国监控难题破解:多层级运维的“中国解法”
  • Spring Boot 与 Elasticsearch 集成踩坑指南:索引映射、批量写入与查询性能
  • 基础算法---【高精度算法】
  • React 18的createRoot与render全面对比
  • 在 React 中如何优化状态的使用?
  • 什么是半导体制造中的PVD涂层?
  • 半导体制造的光刻工艺该如何选择合适的光刻胶?
  • 用图论来解决问题
  • 机器视觉在半导体制造中有哪些检测应用
  • 从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
  • CoCo:智谱推出的企业级超级助手Agent
  • 【高等数学】第十一章 曲线积分与曲面积分——第七节 斯托克斯公式 环流量与旋度