今日学习20190428

数据结构

1.顺序查找   加监视哨/不加监视哨O(n)

2.折半查找(二分查找) O(log2 n)

递归/非递归

递归(Low>High)

非递归(Low>=high)  mid=(Low+High)/2 可能溢出

3.分块查找    O(  log2(m+1)+ n/(2m)  )

块间有序,块内无序。现在块间找,然后在块内找。

4.二叉排序树

定义: ①若左子树不为空,则左子树上所有的节点的值都比根节点的小,若右子树不为空,那么右子树的所有节点的值都比根节点小大。

    ②左右子树都是二叉排序树。

插入:①若二叉排序树为空,则生成值为k的新节点s,同时将新节点s作为根节点插入。

②若k小于根节点的值,则在根节点的左子树中插入值为k的节点。

③若k大于根节点的值,则在根节点的右子树中插入值为k的节点。

④如k等于根节点的值,则多么二叉排序树中存在该关键字,无需插入。

查找:

删除:

①删除叶子节点

②删除单支节点

③删除双支节点:首先用呗删除节点左子树中值最大的节点代替被删除的节点,然后从左子树中删除该节点(即左子树的最右孩子)。也可以用被删除的节点右子树中值最小的节点代替被删除的节点(右子树的最左孩子),然后在右子树中删除该值最小的节点。  递归。

5.平衡二叉树

定义:左右子树的高度差的绝对值不超过1的二叉排序树,所有的子树也是平衡二叉树。

平衡因子:左右子树的高度差。

调整:

1)LL型(左子树高,在左子树的左边插入)

2)RR型

3)LR型

4)RL型

6.B树(文件系统/  数据库)

定义:一颗m阶的B树,或者为空树或为满足下列特性的m叉树。

1)树中子树的要求:每个子树至多有m棵子树;若根节点不是叶子节点,则至少有两颗子树;除根节点之外的所有非终端节点至多有X=(m+1)/2棵子树。

2)树中关键字个数的要求:关键字升序排序,第一个数字为关键字的个数,关键字个数n  X-1<=n<=m-1

3)叶子节点要求:所有叶子节点都出现在同一层,并且不带信息。这些节点可以看成是外部节点或者是查找失败的节点。

查找:

①先在B树上找节点

②在节点中找关键字

由于B树一般是存储在外存上,因此操作①就是通过指正在此案相对定位将节点信息读入内存,之后再读理解的中的 关键字有序表进行顺序查找或者折半查找。因为在磁盘中读取节点信息比在内存中进行关键字查找耗时多,所有在磁盘读取节点信息的次数,即B树的层数是觉得B树查找效率的首要因数。

插入:在底层向上生长。分裂,左右变成一个节点,中间的插入父节点。

删除:

①底层 ②非底层

B+树

Hash查找

猜你喜欢

转载自www.cnblogs.com/needoffer/p/10786763.html