摘要: 上节课进一步研究了链表及其具有的一种固有属性 递归,并递归实现了链表元素的删除操作。本节课学习另外一种高效的数据结构 树。 1. 二分搜索树 树是一种天然的组织结构,在实际生活中非常常见,比如: 文件夹的存储结构 公司的人员组织架构 很多数据使用树结构存储以后,出奇的高效。树结构主要包括以下几种: 阅读全文
posted @ 2019-09-20 19:16 Shinesu 阅读(206) 评论(2) 推荐(0) 编辑
摘要: 1. C语言书写规范: 是C语言中具有特殊意义的单词,全部小写 一行内尽量放置一条语言,超长的语句可以放在多行内 在合适的地方使用空格提高可读性 被同一个大括号包含的语句要左对齐,被不同大括号包含的语句要用缩进区分开 联系不紧密的语句之间可以使用空行隔开 标识符尽量用英文写,多个单词可以采用 或 进 阅读全文
posted @ 2019-09-20 19:16 Shinesu 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 前面两节课程主要介绍了动态数组、栈以及队列这样三种数据结构,这三种数据结构的底层都是依托于静态数组构建的,靠resize解决固定容量的问题。本节课介绍一种 真正的动态数据结构 链表,链表也是一种线性数据结构,是最简单的动态数据结构。 1. 链表基础 1.1 链表的特点 链表的数据存储在节点(Node 阅读全文
posted @ 2019-09-11 19:57 Shinesu 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1. 栈 Stack 1.1 栈的特点 栈是一种线性结构 只能从一端添加元素,也只能从同一端(栈顶)取出元素 后进先出(Last In First Out,LIFO) 1.2 栈的应用 无处不在的撤销操作(Undo) 程序调用的系统栈 括号匹配("{}\ "\" [()]") import java 阅读全文
posted @ 2019-08-21 19:31 Shinesu 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 1. Java中的数组 Java中的数组是静态数组,使用场景主要是“索引有语意”的情况,比如按学号查找分数,索引为学号。Java中数组的特点主要包括: 索引从0开始 声明时需要指定数组长度 最大的优点是查询速度快,通过索引直接定位 查询与查找 测试 3.2 动态数组 之前构建属于自己的数组,实际上还 阅读全文
posted @ 2019-08-19 20:00 Shinesu 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 上节课主要介绍了计算微分的几种数值方法,对一阶微分,最简单的莫过于两点前向差分、后向差分和中心差分这三种方法,其中中心差分的精度最高,这三种差分公式都可以通过推导泰勒展开式得到,而通过泰勒展开式还可以推导出三点前向差分和三点后向差分。对二阶微分,则可以推导出三点中心差分、三点前向差分、三点后向差分公 阅读全文
posted @ 2019-08-12 10:04 Shinesu 阅读(1105) 评论(0) 推荐(0) 编辑
摘要: 上一节课主要介绍了曲线拟合与插值,曲线拟合主要包括线性拟合(单特征线性回归和非线性拟合(非线性方程特征变换、高阶多项式拟合),插值包括多项式插值(拉格朗日形式、牛顿形式)、样条插值(线性插值、二次样条插值、三次样条插值),其中三次样条插值还有一个便于求解的拉格朗日形式。这里的曲线拟合与机器学习中的回 阅读全文
posted @ 2019-08-09 15:28 Shinesu 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 上节课主要介绍了特征值与特征向量的概念,低阶矩阵的特征值可以通过列出特征方程求解,高阶矩阵则可以通过幂法与反幂法迭代求解出最大特征值与最小特征值(模),要求出矩阵的全部特征值则需要借助矩阵的 QR分解来将矩阵相似化为一个上三角矩阵,相似化过程不改变矩阵的特征值,因此转化后的上三角矩阵的对角线元素即为 阅读全文
posted @ 2019-08-04 09:39 Shinesu 阅读(1238) 评论(0) 推荐(0) 编辑
摘要: 上节课主要介绍了线性方程组的两种迭代求解算法,一个是Jacobi迭代(同步更新),一个是高斯塞德尔迭代(异步更新)。对于特殊的三对角系统,一种更简单快捷的Thomas算法也可以用来求解。之后介绍了向量范数与矩阵范数的概念,线性系统数值解的相对误差可以通过条件数来判定。本节课主要介绍矩阵的特征值,特征 阅读全文
posted @ 2019-07-31 16:27 Shinesu 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 上节课主要介绍了线性方程组的几种直接求解法,包括高斯消去法(主元消去)、高斯约当法(可以用来求解矩阵的逆)、LU分解法(高斯消去和Crout 方法),使用高斯消去法实现LU分解的原理可以通过一种拉格朗日形式来理解。本节课主要介绍线性方程组的几种迭代求解法,包括Jacobi法和高斯塞德尔法。 1. 使 阅读全文
posted @ 2019-07-26 14:52 Shinesu 阅读(783) 评论(0) 推荐(0) 编辑