查找
静态查找表 查找只进行查询和检索操作
动态查找表 查找除了上述两种操作还包括插入和删除
平均查找长度
ASL=∑(i=1.n)PiCi
Pi为查找表第i个记录的概率
Ci为找到表中其关键字与给定值相等的第i个记录时,和给定值已进行过比较的关键字个数
顺序查找 ASL=(n+1)/2
折半查找
1 | int Search_Bin(SSTable ST,KeyType key){ |
用二叉判定树表示,ASL=(∑每层结点数层数)/N 假设概率相等
*注意:必须为有序表**
二叉排序树
空树或满足如下性质的二叉树:
①若它的左子树非空,则左子树上左右节点的值均小于根结点的值
②若它的右子树非空,则右子树上所有节点的值均大于根结点的值
③它的左右子树也分别是二叉排序树
建立、插入、删除的时间复杂度O(nlog2 n)
删除操作:
①p是叶子,则直接删除p
②p只有一个孩子child,只需将child和p的双亲直接连接就可删去p
③p有两个孩子,则先将p结点的中序后继结点的数据接到p,删除中序后继结点
代码
1 |
|