您的位置:首页 > 大数据

大数据算法导论第四周

2017-12-07 16:14 190 查看
PPT课件地址

目录

用户数据查找(搜索)的数据结构

使用链表解决冲突

散列函数

布隆过滤器

散列函数个树与假正概率

二叉搜索树

查询二叉树

插入

删除

二叉树的弱点

红黑树

红黑树是最好的搜索树

习题

用户数据查找(搜索)的数据结构

散列表

布隆过滤器

二叉树

红黑树

B树

散列表



使用链表解决冲突



散列函数

什么是好的散列函数

关键字转化为自然数

除法散列

乘法散列

现实中常用的散列函数:MD5,SHA

布隆过滤器

用途:判断某个值是否在指定的集合中存在

原理



散列函数个树与假正概率

二叉搜索树



查询二叉树

查询

TREE-SEARCH(x,k)

if(x==NIL or k==x.key)

return x

if(k< x.key)

return TREE-SEARCH(x.left,k)

else

return TREE-SEARCH(x.right,k)

ITEARTIVE-TREE-SEARCH(x,k)

while (x !=NIL and k!=x.key)

if(k< x.key) x=x.left

else

x=x.right

return x;

插入



TREE-INSERT(T,z)

y=NIL

x=T.root

while (x!=NIL)

y=x

if(z.key < x. key)

x=x.left

else

x=x.right

z.p=y

if(y==NIL)

T.root=z //tree T was empty

else if(z.key < y.key)

y.left = z

else

y.right = z

添加

RB-INSERT(T,z)

y=T.nil

x=T.root

while (x!=T.nil)

y=x

if(z.key< x.key)

x=x.left

else

x=x.right

z.p=y

if(y==T.nil)

T.root = z

else if(z.key< y.key)

y.left = z

else y.right =z

z.left = T.nil

z.right = T.nil

z.color = RED

RB-INSERT-FIXUP(T,z)

while(z.p.color == RED)

if(z.p==z.p.p.left)

y=z.p.p.right

if(y.color == RED)

z.p.color = BLACK

y.color =BLACK

z.p.p.color =RED

z=z.p.p

else if z==z.p.right

z=z.p

LEFT-ROTATE(T,z)

z.p.color = BLACK

z.p.p.color =RED

RIGHT-ROTATE(T,z.p.p)

else(same as then clause with “right” and “left” exchanged)

T.root.color = BLACK

二叉树的弱点

已排序数据,瘦长型二叉树

随机构建二叉树

红黑树

每个节点或是红色,或是黑色

跟节点是黑色

每个叶节点(NIL)是黑色

如果每个节点是红色的,则它的两个节点都是黑色的

对每个节点,从该节点到其他所有后代叶节点的简单路径上,均包含相同数目的黑色节点



红黑树是最好的搜索树

一棵树有n个内部节点的红黑树的高度至多为2lg(n+1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息