Ruixiang Li

概论

数据结构?

1.信息结构

二元组,有唯一的开始节点终止节点,其余为内部节点。前驱关系和后驱关系具有反对称性传递性

2.数据的存储结构

对逻辑结构(K,r),其中$r \in R$

对节点集K建立从K到存储器M的单元的映射:K–>M。对于每个节点$j \in K$都对应一个唯一的连续存储区域$c \in M$。

四类:顺序、链接、索引、散列

3.抽象数据类型(ADT)

模块化的思想:软件复用、隐藏运算实现的细节和内部数据结构

抽象数据结构二元组<数据对象D,实际操作P>(类和方法?)

先定义逻辑结构,再定义运算

e.g.栈:线性表,操作特点是限制访问端口。

算法

问题:一个函数,输入到输出的映射

特性:通用、有效、确定、有穷

基本分类:

算法复杂度分析:大O表式法

定义:对于正数c和n_0,任意的n>=n_0,有f(n) <= cg(n),则f(n)=O(g(n))。

单位时间:布尔运算和算术运算、简单I/O(指函数输入输出)、函数返回。

大O表示法:表达函数增长率上限,是函数最好情况的描述。上下限相同时可用$\Theta$表示法。

时空权衡。

$\Omega$表示法

定义:对于正数c和n_0,任意的n>=n_0,有f(n) >= cg(n),则f(n)=$\Omega$(g(n))。

n 足够大时,g(n)的f(n)的下界,函数增长率的下限,是函数最坏下限的描述。