1. 数据结构
数据的逻辑结构,存储结构及操作(数据的运算)
1.1 数据
数据:不只是一个单纯的数值,而是类似于一个集合的概念
数据元素:是数据的基本单位,由若干个基本项组成
数据项:是数据的最小单位,描述数据元素的信息
注意:节点就是数据元素
整个表为数据,每一行为数据元素,单个编号等信息为数据项
1.2 逻辑结构
数据之间的逻辑规律和数据之间的关系
数据之间的关系:
1)线性关系 ----》 线性结构 ------》一对一 ------》线性表
2)层次关系 ------》树形结构 ---------》一对多 ---------》 树
3)网状关系 -------》 图状结构 --------》 多对多 ----------》 图
1.3 存储结构
数据结构的逻辑结构在计算机中的具体实现
1.3.1 顺序存储结构
数组:在内存当中一段连续的内存空间中保存数据(如c语言中的一维数组)
1.3.2 链式存储结构
特点:数据在内存中是不连续的,通过指针进行连接
链表:
struct node_t
{
int date; //数据域
struct node_t * next; //指针域,指向自身
};
struct node_t A;
struct node_t B;
struct node_t C;
A. next = &B;
B. next = &C;
1.3.3 索引存储结构
提高查找速度
索引表 + 数据文件
1.3.4 散列存储结构
数据在存储的时候与关键码之间存在某种对应关系
存的时候按照对应关系存
取的时候按照对应关系取
2. 算法
解决问题的思想方法
2.1 算法与程序
算法:解决问题的思想方法
程序:用计算机语言对算法的具体实现
2.2 算法与数据结构
算法 + 数据结构 = 程序
算法的设计:取决于选定的逻辑结构
算法的实现:依赖于采用的存储结构(顺序、链式)
2.3 算法的特性
1)有穷性:算法的执行步骤是有限的
2)确定性:算法的每一步都是有明确含义的
3)可行性:算法能够在有限的时间内完成
4)输入
5)输出
2.4 评价算法好坏
正确性:保证算法可以正确完成功能
易读性:容易被解读
健壮性:容错处理
高效性: 执行效率,算法执行快慢容易受到计算机性能的影响,不可以作为评判 算法高效性的标准,这通过可执行语句重复执行次数来衡量算法是否高 效。(时间复杂度)
低存储型:占用空间小(空间复杂度)
2.5 时间复杂度
算法的可执行语句重复执行的次数
通常时间复杂度用一个问题规模函数来表达
T(n) = O(f(n))
T(n) //问题规模的时间函数
n 问题规模
O //时间数量级
f(n) //算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达
计算大O的方法
1) 根据问题规模n写出表达式f(n)
2) 只保留最高项,其他项舍去
3) 系数化为1
4) 如果只有常数项,将其置为1