IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构复习(b站)笔记 -> 正文阅读

[数据结构与算法]数据结构复习(b站)笔记

文章目录

时间戳——2022.06.13(2.5h)

在这里插入图片描述

一、数据结构要研究的内容

1.计算机解决问题步骤

(1)3步骤:具体问题抽象为数学模型–>设计算法–>编程、调试、运行
(2)1实质:把具体问题抽象为数学模型的实质是:分析问题–>提取操作对象–>找出操作对象之间的关系–>用数学语言描述
(其中操作对象以及操作对象之间的关系称为数据结构)(即数据结构=操作对象+操作对象之间的关系)

在这里插入图片描述

2.计算机解决数值计算(略)

在这里插入图片描述

3.计算机解决非数值计算(重点)——线性【表】

(1)操作对象:行记录。
(2)操作对象之间的关系:线性关系。(也就是每行记录之间的关系)

在这里插入图片描述

在这里插入图片描述

4.计算机解决非数值计算(重点)——非线性【树】

(1)操作对象:棋局状态、子目录。
(2)操作对象之间的关系:(倒)树状结构。(一种当前格局派生出多种格局、一个父目录下有多个子目录)(一对多的关系)

在这里插入图片描述
在这里插入图片描述

6.计算机解决非数值计算(重点)——非线性、网状【图】

(1)操作对象:构成一条线路的各个地点的信息。
(2)操作对象之间的关系:非线性结构、网状结构。(起点和终点之间构成的多条线路,而连起来的网)

在这里插入图片描述

7.内容小结

(1)数据结构是一门学科。
(2)数据结构是一门研究非数值计算以及它们之间的关系和操作的学科。
(3)数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
(4)描述非数值计算问题的数学模型是:表、树、图。(它们都是具有逻辑关系的数据)

在这里插入图片描述

二、基本概念和术语1

1.数据、数据元素、数据项、数据对象

(1)数据元素是数据的基本单位。
(2)数据项是数据元素的最小单位。
(3)数据对象是数据元素的集合。

在这里插入图片描述

2.数据

(1)数据是:符号的集合。(可输入到计算机中)(且可被计算机识别)

在这里插入图片描述

3.数据元素

(1)数据的一些部分,其关系比较紧密,进行操作的时候一般作为一个整体进行操作。比如一个表数据,其中的一条记录,也就是一行记录就被多个数据项所组成。
(2)数据元素是:数据的基本单位。(也就是说:数据是数据元素的集合)(如:表数据的一条行记录)
(3)数据元素:也叫做元素、(行)记录、(树)节点、(图)顶点。

在这里插入图片描述

4.数据项

(1)数据项是:构成数据元素的最小单位。(比如下面学籍表,其中的一行记录中的5个具体字段都是数据项,组合后构成了数据元素)
(2)数据>数据元素>数据项

在这里插入图片描述

5.数据对象

(1)数据对象是:相同性质的数据元素的集合。(也是数据的一个子集)

在这里插入图片描述

6.数据元素和数据对象的关系(重点)

(1)数据元素是:组成数据(数据就是集合)的基本单位。
(2)数据元素是:数据(数据就是集合)的个体。
(3)数据对象是:相同性质的数据元素的集合。
(4)数据对象是:数据(数据就是集合)的子集。

在这里插入图片描述

7.数据结构实质(重点)

(1)数据是:数据元素的集合。(注意:别混淆,数据对象是相同性质的数据元素的集合)
(2)结构是:数据元素相互之间的关系。
(3)数据结构是:相互之间存在一种或多种特定关系的数据元素集合。(或者说,数据结构是带结构的数据元素的集合)

8.数据结构的三个方面(重点)

(1)“数据的”逻辑结构是:数据元素之间的逻辑关系。
(2)“数据的”物理结构或存储结构是:数据元素及其关系在计算机内存中的表示(又称为映像)。
(3)“数据的”运算或实现是:施加在数据元素之上的操作以及这些操作在相应存储结构上的实现。

在这里插入图片描述

9.数据结构的两个层次

(1)逻辑结构
(2)物理结构(存储结构)

在这里插入图片描述

10.逻辑结构的两个分类(重点)

(1)线性结构:有且仅有一个开始结点、一个终端结点,所有结点最多只有一个直接前趋和一个直接后继。(如:线性表、栈、队列、串)
(2)非线性结构:一个结点可能有多个直接前趋和直接后继。(如:树、图)

在这里插入图片描述

11.逻辑结构的四个分类(重点)

(1)集合结构:结构中的数据元素只是同属于一个集合。
(2)线性结构:结构中的数据元素一对一的线性关系。
(3)树形结构:结构中的数据元素是一对多的层次关系。
(4)图状结构或网状结构:结构中的数据元素是多对多的任意关系。

在这里插入图片描述

12.存储结构(物理结构)的四个分类(重点)

(1)顺序存储结构:依次存储数据单元。
(2)链接存储结构:存储自身元素的同时,存储了下一个元素的地址。
(3)索引存储结构:略。
(4)散列存储结构:略。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

时间戳——2022.06.14-15(xh)

在这里插入图片描述

三、数据类型和抽象数据类型

1.数据类型的相关概念

(1)一些基本的数据结构:可以用数据类型来实现。
(2)而另外一些常用的数据结构:不能直接用数据类型来实现了。

在这里插入图片描述

2.数据类型的作用

(1)作用1:约束取值范围。
(2)作用2:约束操作。

请添加图片描述

3.数据类型的定义

(1)数据类型=值的集合+值得集合上的一组操作。

在这里插入图片描述

4.抽象数据类型的相关概念

(1)抽象数据类型:简称为ADT。
(3)抽象数据类型=数学模型+数学模型上的一组操作。(用户自定义的)

5.抽象数据类型的形式定义(重点)

(1)抽象数据类型可用:(D,S,P)三元组来表示。
(2)D是:数据对象。
(3)S是:数据对象上的关系集。
(4)P是:数据对象上的基本操作集。

在这里插入图片描述

6.抽象数据类型的定义格式(重点)

在这里插入图片描述

7.基本操作的定义格式

(1)参数表:提供用户输入值的同时,还可以使用&符号来返回结果。
(2)初始条件:可有可无。
(3)操作结果:返回的结果。

在这里插入图片描述

在这里插入图片描述

8.操作数据类型定义举例1-圆(重点)

在这里插入图片描述

9.操作数据类型定义举例2-复数(重点)

在这里插入图片描述

在这里插入图片描述

10.概念小结

在这里插入图片描述

在这里插入图片描述

四、抽象数据类型的实现

1.抽象数据类型的实现

(1)抽象数据类型的实现:变为一个能用的具体的数据类型。(在计算机上实现)

在这里插入图片描述

2.抽象数据类型如何实现

(1)利用已存在的数据类型来说明新的结构。
(2)利用已经存在的操作组合新的操作。

在这里插入图片描述

3.C语言实现抽象数据类型

(1)用已有的数据类型定义“ADT”的存储结构。
(2)用函数定义“ADT”的操作。

在这里插入图片描述

4.C语言实现抽象数据类型的定义举例1-复数(重点)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、算法和算法分析

1.《数据结构与算法》

在这里插入图片描述

2.算法的定义

(1)算法就是:解决问题的方法和步骤。

在这里插入图片描述

3.算法的描述

(1)自然语言:中英文等等。
(2)流程图:传统流程图、NS流程图(盒图)。
(3)伪代码:类语言:类C语言。
(4)程序代码:C语言程序代码、JAVA语言程序代码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.算法与程序的关系(重点)

(1)程序=数据结构+算法。
(2)数据结构和算法是相辅相成的。
(3)数据结构通过算法来实现操作,而算法通过数据结构来设计程序。

在这里插入图片描述

5.算法的5特性

(1)有穷性;
(2)确定性;
(3)可行性;
(4)有0个或多个输入;
(5)有1个或多个输出。

在这里插入图片描述

6.算法设计的4要求

(1)正确性;
(2)可读性;
(3)健壮性;
(4)高效性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.算法分析的目的

(1)算法分析的目的1:看算法实际是否可行。
(2)算法分析的目的2:从多个算法中挑选出较优的算法。

在这里插入图片描述

8.算法效率(重点)

(1)在算法设计的时候,若满足正确性、健壮性、可读性了,就要开始考虑:算法的效率了。
(2)算法效率包括:时间效率和空间效率。
(3)时间效率:算法所耗费的时间。
(4)空间效率:算法执行过程中所耗费的存储空间。

在这里插入图片描述

9.算法时间效率的2种度量方法(重点)

(1)事后统计法。
(2)事前分析法。

在这里插入图片描述

10.事前分析法(重点)

(1)算法运行时间:一个简单操作所需的时间 X 简单操作次数。
(2)算法运行时间:每条语句的执行次数 X 该语句执行一次所需的时间。
(3)每条语句的执行次数:又称为语句频度。
(4)所有语句的执行次数:又称为语句频度之和。
(3)假设执行每条语句所需要的时间均为单位时间,则算法运行时间只需要计算所有语句的执行次数,即语句频度之和。

在这里插入图片描述
在这里插入图片描述

11.事前分析法举例1-nxn矩阵(重点)

(1)注意1:“for循环语句”执行了n+1次,是因为最后还需要判断n+1<=n不成立,因此与循环体相比多算了一次。
(2)注意2:“for循环体”执行了n次,是因为在最后判断了n+1<=n不成立之后,不再进入循环体,所以循环体执行了n次。

(注意区分:循环语句和循环体)

在这里插入图片描述

六、算法时间复杂度-渐进表示法

1.算法时间复杂度的基本概念(重点)

(1)为了比较时间效率,我们仅仅比较它们的“数量级”。(如:10n2优于5n3)
(2)同数量级函数:两无穷大之比为不为0的常数。(如:10n2/5n2=2,则两者之间为同数量级)
(3)同数量级函数记法:T(n)=O(f(n)),其中O是数量级的符号。
(4)O(f(n))称作:算法的渐进时间复杂度,简称为“算法时间复杂度”。

在这里插入图片描述

2.算法时间复杂度的求法(重点)

在这里插入图片描述

3.算法时间复杂度的定义

在这里插入图片描述
在这里插入图片描述

4.算法时间复杂度的定理1(重点)

(1)定理1:忽略低次幂项和最高次幂系数。

在这里插入图片描述

5.算法时间复杂度的计算3步骤(重点)

(1)步骤1:找到语句频度最大的那条语句作为基本语句。
(2)步骤2:计算基本语句的频度,从而得到问题规模n的某个函数f(n)。
(3)步骤3:取其数量级符号"O"表示。
(4)计算本质:算嵌套最深的语句频度。(用n的某个函数来表示次数)(然后取O)

在这里插入图片描述

6.算法时间复杂度的计算-4个举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.算法时间复杂度计算-特例

在这里插入图片描述

8.算法时间复杂度三个分类

在这里插入图片描述

9.算法时间复杂度的两个规则

(1)加的复杂度=分别复杂度,再取最大值;
(2)乘的复杂度=复杂度的乘。

在这里插入图片描述

10.算法时间复杂度的比较

在这里插入图片描述

七、算法空间复杂度-渐进表示法

1.算法空间复杂度定义

在这里插入图片描述

2.算法空间复杂度例1-一维数组逆序排列

在这里插入图片描述

3.设计好算法的过程

在这里插入图片描述

4.知识回顾

在这里插入图片描述

八、线性表

1.线性表的定义和特点

在这里插入图片描述

2.线性表的4个例子

在这里插入图片描述

在这里插入图片描述

3.线性表的逻辑特征

在这里插入图片描述

4.线性表的案例1-规律一元多项式的运算

(1)规律的一元多项式:用一维数组来表示,数组下标表示指数和系数下标,而数组值存入系数。
(2)稀疏的一元多项式:用二维数组来表示,一维存指数,二维存系数。(可以互换啊)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.线性表的案例2-稀疏一元多项式的运算

(1)稀疏的一元多项式:用二维数组来表示,一维存系数,二维存指数。(可以互换啊)
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-16 21:51:22  更:2022-06-16 21:51:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:42:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码