第1章 概论
第1章 概论
目录
数据结构与算法_师大完整教程目录(更有python、go、pytorch、tensorflow、爬虫、人工智能教学等着你):https://www.cnblogs.com/nickchen121/p/13768298.html
一、数据结构的基本概念与术语
1.1 数据结构的基本概念
- 数据结构:按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义了一个运算集合
1.2 数据的逻辑结构
-
逻辑结构的种类:
- 集合
- 线性结构
- 树形结构
- 图状结构
-
数据的逻辑结构:数据和数据之间存在的逻辑关系
-
开始结点:结点没有前驱结点
-
终端结点:结点没有后继结点
-
内部结点:既不是开始结点也不是终端结点
-
注:有时候,逻辑结构简称为数据结构
1.3 数据的存储结构
-
存储结构的种类:
- 顺序存储
- 链式存储
- 索引存储
- 散列存储
-
数据的存储结构:数据在计算机中的存储方式
-
顺序存储:逻辑上相邻的结点物理位置也相邻
-
链式存储:逻辑上相邻的结点物理位置不一定相邻(可相邻可不相邻)
-
索引存储:根据结点的索引号确定该结点的存储地址
-
散列存储:结点在计算机中的存储地址由h(函数)决定
- 存储密度 = 数据本身所占存储空间的大小 / 整个数据结构所占存储空间的大小
- 注:顺序存储密度 = 1;链式存储密度 < 1
1.4 数据的运算集合
-
数据的运算:定义在数据的逻辑结构上,具体实现依赖于数据的存储结构
-
数据的运算集合
- 插入
- 删除
- 检索
- 输出
- 排序
二、数据类型和抽象数据类型(大纲未规定)
2.1 数据类型
- 数据类型:反映了数据的取值范围以及对这类数据可以施加的运算
- 数据类型的两个方面:数据属性 + 在数据上可以施加的运算集合
- 注:数据结构是数据存在的形式
2.2 抽象数据类型
- 抽象数据类型:数据类型的进一步抽象,基本数据类型的延伸和发展
2.3 抽象数据类型的描述和实现
- 抽象数据类型的描述:抽象数据类型的名称 + 数据的集合 + 数据之间的关系和操作的集合
- 抽象数据类型的实现:依赖于程序设计语言实现
三、算法和算法分析
3.1 算法的基本概念和基本特征
-
算法:求解问题的方法和步骤(一系列有限的运算规则 or 若干条指令组成的有穷序列)
-
算法的特征:
- 有穷性:算法执行必须在有限步结束
- 确定性:算法的每一个步骤都必须是确定的、独一无二的
- 输入:算法有0个或多个输入
- 输出:算法一定有输出结果
- 可行性:算法中的运算必须是可以实现的
-
程序:用计算机语言表达的求解一个问题的一系列指令的序列
-
算法和程序的区别:算法具有有穷性;程序不需要具有有穷性
3.2 算法的时间复杂度和空间复杂度
- 算法的时间复杂度:算法执行过程中他的基本操作的执行次数
- 注:评价算法的时间复杂度时,不考虑两算法执行次数之间的细小区别,而只关心算法的本质区别
- 常见算法的复杂度:1、\(log_2n\)、n、\(nlog_2n\)、\(n^2\)、\(n^3\)、\(2^n\)
- 算法的最好情况:算法计量值的最小值
- 算法的最坏情况:算法计量值的最大值
- 算法的平均情况:算法在所有可能情况下的计算量的加权平均值
- 算法的空间复杂度:除了存储数据本身以外的附加存储空间
、