0X00数据结构
1.定义
数据结构是一门讨论“描述现实世界实体的数据模型(通常为非数值计算)及其之上的运算在计算机中如何表示和实现”的学科。
2.几个概念
- 数据:描述客观事物的数和字符的集合;
- 数据元素:即一条记录,是数据的基本单位;
- 数据项:即字段或域,具有独立含义的最小数据单位;
- 数据对象:性质相同的数据元素的集合,数据的子集;
- 数据结构:所有数据元素以及数据元素之间的关系。
我的理解:
3.研究范围
- 数据的逻辑结构:数据元素间的逻辑关系
- 集合
- 线性结构
- 树形结构
- 图形结构
- 数据的存储结构:数据元素及其关系在计算机中的存储方式
- 顺序存储结构
- 链式存储结构
- 索引存储结构
- 散列(哈希)存储结构
- 数据的运算
4.描述:二元组
B=(D,R)
其中,B是一种数据结构,由数据元素的集合D和D上的二元关系的集合R组成。
0X01算法
1.算法是什么?
算法是在具体的存储结构上实现某个抽象运算,由控制结构(顺序、分支和循环)和原操作(对固有数据类型的操作,视为算法基本运算)构成。
算法的5个特性:
- 有穷性
- 确定性
- 可行性
- 有输入
- 有输出
2.算法的描述
- 语言方式
- 图形方式
- 表格方式
3.算法分析
-
算法设计的目标
- 正确性
- 可使用性
- 可读性
- 健壮性
- 高效率与低存储量需求
-
算法的效率分析
- 事后统计法
- 事前分析估算法
时间复杂度:一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记作T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中的基本运算(最深层循环内的语句)的频度与T(n)同数量级,所以通常釆用算法中基本运算的频度 f(n)来分析算法的时间复杂度。因此,算法的时间复杂度也记为:
T(n)=O(f(n))
- 算法存储空间分析
空间复杂度:对一个算法在运行过程中(辅助变量)临时占用的存储空间大小的量度,一般作为问题规模n的函数——S(n)=O(g(n))。
0X02数据结构学什么?
- 逻辑结构
- 线性结构(线性表、栈、队列、串、数组、广义表)
- 树形结构(树、二叉树)
- 图形结构(图)
- 算法(递归、查找、内排序、外排序)
- 存储结构(文件)
0X03如何学习数据结构?
- 多思考
- 多上机