数据结构及算法知识(三)

一、数组
①特殊矩阵的压缩存储:(对称矩阵、三角矩阵、对角矩阵)的压缩存储方法是把有一定分布规律的值相同的元素(包括0)压缩存储到一个存储空间中。这样的压缩存储只需要在算法中按公式作映射可实现矩阵元素的随机存储。
②稀疏矩阵的三元组表示
稀疏矩阵的压缩存储方法是只存储非零元素。
稀疏矩阵中的每一个非零元素需由一个三元组(i,j,aij)唯一确定,稀疏矩阵中的所有非零元素构成三元组线性表。
若把稀疏矩阵的三元组线性表按顺序存储结构存储,则称为稀疏矩阵的三元组顺序表。
稀疏矩阵运算通常包括矩阵转制、矩阵加减乘等。
常规的非稀疏矩阵应采用二维数组存储,只有当矩阵中非零元素个数远小于mxn时,才可采用三元组顺序表存储结构。
二、广义表
广义表简称表,是线性表的推广。
GL=(a1,a2,...,ai,...,an),n表示广义表的长度。n=0时称为空表。
如果ai是单个数据元素,则ai是广义表GL的原子;如果ai是广义表,则ai是广义表GL的子表。
广义表的特性:
①广义表中数据元素有相对次序。
②广义表的长度定义为最外层包含元素个数。
③广义表的深度定义为所含括弧的重数。其中,原子的深度为0,空表的深度为1。
④广义表可以共享。一个广义表可以被其他广义表共享,这种共享广义表称为再入表。
⑤广义表可以是一个递归的表。一个广义表可以是自己的子表,这种广义表称为递归表。递归表的深度是无穷值,长度是有限值。
⑥任何一个非空广义表GL均可分解为表头head(GL)=a1和表尾tail(GL)=(a2,...,an)两部分。
三、查找
若在查找的同时对表做修改运算,则相应的表称为动态查找表,否则为静态查找表。
若整个查找过程都在内存进行,则称为内查找;若查找过程需要访问外存,则称为外查找。
线性表的查找:顺序查找、折半查找、分块查找。
顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描的关键字与给定值比较,若相等,则查找成功;若扫描结束仍未找到,则查找失败。
折半查找:(二分查找)折半查找要求线性表是有序表。思路:通过不断确定区间及终点值缩小比较次数。只使用与顺序存储结构。
分块查找:(索引顺序查找),思路:首先查找索引表,由于索引表是有序表,故可采用折半查找或顺序查找,确定待查的元素在那一块;然后在已确定的块中进行顺序查找。折半查找只适用于静态查找。
动态查找用树表。
二叉排序数(BST)(二叉查找树)(二叉搜索树):空树或满足以下条件:
①左子树的值小于等于根元素的值。
②右子树的值大于等于根元素的值。
③左右子树本身又各是一颗排序二叉树。
重要性质:中序遍历二叉排序树所得到的中序序列是一个递增有序序列。
平衡二叉树:(AVL)若一颗二叉树每个节点的左右子树的高度至多相差1(可以是1,、0、-1),则称为平衡二叉树。
BST和AVL数都是用作内部查找的数据结构,可以放在内存中;B-数和B+树是用作外部查找的数据结构,其中的数据存放在外存中。

你可能感兴趣的:(数据结构与算法)