查找
静态查找表
1,顺序查找
ASL = nP1 +(n-1)P2 +…+2Pn-1 +P;
2,有序表查找
3,折半查找
注意mid,low等下标的变换顺序
4,索引顺序表
动态查找表
1,二叉排序树
2,平衡二叉树、AVL树
3,B树
3.1,B树的相关定义:
B树是一种平衡的多路查找树,它在文件系统中很有用。一棵m阶的B树,或为空树,或为满足下列特性的m叉树:
(1)树中每个结点至多有m棵子树;
(2)若根结点不是叶子结点,则至少有两棵子树;
(3)除根之外的所有非终端结点至少有┌m/2┐棵子树;
(4)所有的非终端结点中包含下列信息数据
(n,A0,K1,A0,K2,A2,K2,...,Kn,An),实际上在B树的每个结点中还包含n个指向每个关键字的记录的指针。
其中:Ki为关键字,且Ki<Ki+1;Ai为指向子树根节点的指针,且指针Ai-1a所指子树中所有结点的关键字均小于ki,An所指子树中所有结点的关键字均大于Kn,n(┌m/2┐-1 <= n <= m-1)为关键字的个数(或者n+1为子树个数)。
(5)所有叶子结点都出现在同一层次上,并且不带信息(可以看着是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。
例如:一棵4阶的B树,其深度为4:
3.2,B树的插入和删除
...
4,B+树
B+树是应文件系统所需而出的一种B树的变型树。一棵m阶的B+树和m阶的B树的差异在于:
(1)有n棵子树的结点中有n个关键字。
(2)所有的叶子结点中包含了全部关键字信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
(3)所有的非终端结点可以看成是索引部分,结点中仅含有其子树(根结点)中最大(或最小)关键字。