一:数据结构的基本概念
- 数据:是描述客观事物的数值,字符,能被输入机器并且被处理的各种符号集合
- 数据项:是不可分割的最小数据,具有原子性
- 数据元素:是数据的基本单位,是数据集合的个体,通常由数个数据项组成,在程序中作为一个整体来处理
- 数据对象:是性质相同的数据元素的集合,是数据的子集
- 数据结构:是数据元素相互之间的某种特定关系,即一个数据是以什么方式构成的,什么结构构成
数据结构=逻辑结构+存储结构+操作/运算
逻辑结构有哪些分类?
- 线性结构:有且只有一个起点和一个终点,所有的点最多和两个点连接
- 非线性结构:一对多(树状结构),多对多(网状结构)
- 集合结构:就是数学中的集合,
存储结构有哪些分类?
- 顺序存储:节省内存,可实现对节点的随机查改,但插入和删除需要移动元素,效率较低
- 链式存储:插入和删除(不必移动节点,只要修改节点中的指针)方便,但查看慢
- 索引存储:除了建立存储信息外,还建立了索引表来标识节点的位置
- 散列存储:又称hash存储,是一种力图将数据元素的存储位置与关键码之间建立确定对应关系的查找技术
二:数据结构有哪些?
线性表,栈,队列,串,数组,广义表,树,二叉
三:什么是算法?
是指令的集合,为了解决特定问题而规定的一系列特定操作,简单地说,就是计算机解题过程
算法的特征:
- 输入:有一个待解决的问题
- 输出:有一个结果输出
- 可行性:即算法中的每条指令都是可行的,每个指令都等在有限的时间内完成
- 有穷性:不要是死循环
- 确定性:对于同一个输出,多次运行,总是得到相同结果
四:评价算法优劣的依据:复杂度(时间复杂度和空间复杂度)
1.时间复杂度
- 时间复杂度:不是具体的时间,也不是运行次数,只是规模(极限运算),用T(n)表示
我们一般用最坏时间复杂度用O表示:T(n)=O();
- 如何计算:
- 找出算法中的基本语句:通常是最内层循环的循环体
- 计算基本语句执行的数量级:不是执行次数,而是增长率
- 用O表示时间复杂度:计算方法为高数的求极限
- 常用的时间复杂度:
越向下时间复杂度越大,算法越差
2.空间复杂度
- 算法存储量包括:
- 程序自身所占空间
- 输入数据所占空间
- 辅助变量所占空间
输入数据与算法无关,则只需要计算程序自身所占空间和辅助变量所占空间
空间复杂度是程序运行中占用存储空间的度量,
递归:自身所占空间小,但是运行时占用空间巨大
其中时间复杂应用较多