数据结构自学入门笔记
书目(大话数据结构)
第一章数据结构绪论
数据
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
数据 计算机可识别操作的符号集合 视频音频文字图片等等
数据元素 有一定意义的基本单位 畜类 牛 马 猪 人类 人
数据项 一个数据元素可以由若干个数据项组成, 人这种数据元素可以有年龄,性别,出生地址等等数据项组成 在数据结构中,数据项是最小单位
数据对象 性质相同的数据元素的集合,数据的子集 拥有相同数量类型数据项的数据元素
结构
数据结构 相互之间存在一种或者多种特定关系的数据元素的集合
逻辑结构 数据元素之间的相互关系
1集合结构 一个集合 元素平等
2线性结构 线性相关
3树形结构 一对多
4图形结构 多对多
物理结构
数据的逻辑结构在计算机中的存储形式
(存储结构应当正确的反应数据元素之间的逻辑关系)
顺序存储结构 放在地址连续的存储单元中,数据间的逻辑关系和物理关系是一致的。
链式存储结构
把数据元素存放在任意的存储单元中,这组存储单元可以是连续的也可以是不连续的 因此需要一个指针存放数据元素的地址,通过地址找到对应相关的数据元素的位置
第二章算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法特性
输入输出、有穷、确定、可行
算法设计的要求
正确性、可读性、健壮性、时间效率高和存储量低
算法效率的度量方法
事后统计方法
事先分析方法
一个程序运行时间依赖于 算法的好坏和问题的输入规模
计算对运行时间有消耗的基本操作的执行次数。
把基本操作的数量和输入规模关联起来 将基本操作的数量表示成操作规模的函数
判断算法效率时,函数中的常数和其他次要项常常可以忽略,更应该关注主项的阶数
算法时间复杂度
分析T(n) 和n的函数关系 确定tn的数量级 算法的时间复杂度也就是算法的时间量度。
大O()记法
O(1) O(n) O(n^2)常数阶 线性阶 平方阶
其实就是分析算法要循环的次数 是n的什么函数 并消除一切非最高次项和常数项
平均运行时间
最坏运行时间
排列关系
1 log n n*log n^2 n^3 2^n n! n^n