文章目录
一、基本概念
1.平均查找长度
ASL=∑PiCi (i=1,2,3,…,n)。其中:Pi 为查找表中第i个数据元素的概率,Ci为找到第i个数据元素时已经比较过的次数,n为查找表的长度。
二、折半查找 / 二分查找
详细 链接
(1)时间复杂度: O(logn)
(2)平均查找长度: log(n+1) -1
三、分块查找 / 索引顺序查找
(1)基本思想: 将查找表分为若干子块。块内可无序,块之间有序。
(2)查找方式: 顺序查找/折半查找索引表,确定待查记录所在块,在块内进行顺序查找。
(3)ASL: =L1+L2=(S² +2S+n)/2S
n:长度,b:均分的块数,S:每块的记录数
四、B树
(1)概述: 又称多路平衡查找树,是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。
(2)m阶B树:
1、空树
2、m叉树:
①每个结点至多有m棵子树,m-1个关键字。
②叶节点:也称外部结点或失败结点,都出生在同一层,并不带信息。
③除根节点外的非叶子结点,至少有⌈ m/2 ⌉棵子树,⌈ m/2 ⌉-1个关键字。
④结点中关键字个数:⌈ m/2 ⌉-1<=n<=m-1。
⑤平衡因子均等于0。
(3)树的高度:
1.h+1层至少有2(⌈ m/2 ⌉)^(h-1)个结点。
2.log m (n+1)<=h<=[log ⌈ m/2 ⌉ (n+1)/2]+1。
五、B+树
(1)定义: B+树是B树的一种变形形式,B+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。
(2)性质:
1.结点子树个数和关键字格数相等。
2.所有分支结点仅包含各子结点中关键字的最大值及指针。
3.关键字个数n:⌈ m/2 ⌉<=n<=m。
六、散列表
建立了关键字和存储地址之间的一种直接映射关系。
1.构造方法
(1).直接定址法: H(key)=key 或H(key)=a*key+b
直接取关键字的某个线性函数值为散列地址。适合关键字的分布 基本连续的情况。
(2).除留余数法:H(key)=key%p
其中p<=m,p取不大于m,但最接近或等于m的质数p
(3).数字分析法:
收集所有可能出现的键值,排列在一起,对键值的每一位进行分析,选择分布较均匀若干位组成散列地址。
(4).平方取中法:
取关键字的平方的中间几位作为散列地址。
2.处理冲突的方法:
(1)开放地址法:Hi=(H(key)+di)%m
di为增量序列,di=0,1,2,…,k(k<=m-1)
①线性探测法: di=0,1,2,…,m-1。
缺点查找效率低(大量元素在相邻地址上聚集)
②平方探测法/二次探测法: di=0²,1²,-1²,…,k²,-k²(k<=m/2)
散列表长度m必须是一个可以表示成4k+3的素数.
③双散列表法
④伪随机法
(2)拉链法:线性链表
3.查找效率性能分析
(1)散列函数
(2)装填因子: a=
七、树
1.二叉排序树(BST)
(1)基本思想: 左子树结点值<根结点值<右子树结点值。
(2)性质: 中序遍历,可得递增有序序列。
(3)查找效率: O(logn)
2.平衡二叉树(BBT)
(1)基本思想: 左、右子树高度差的绝对值不超过1。
(2)性质: 节点公式:F(n)=F(n-1)+F(n-2)+1.
F(n-1)为左子树的节点数量,F(n-2)为右子树的节点数量.
F(0)=0,F(1)=1,F(2)=2.
(3)最大深度/平均查找长度: O(logn)
3.红黑树
(1)基本思想: 是一种自平衡二叉查找树。
(2)性质:
左根右
根叶黑:根节点和叶结点都是黑色的。
不红红:不存在两个相邻的红结点(红结点的父节点和孩子结点均是黑色的)。
黑路同:对于每个结点,从改结点到任一叶节点的简单路径上,所含黑结点的数量相同。
(3)概念和结论:
黑高:从某结点出发(不含该结点),到达一个叶结点的任一简单路径上的黑结点总数。
结论1:从根到叶结点的最长路径不大于最短路径的2倍。
结论2:n个内部结点的红黑树的高度 h <=2log(n+1)。
注:如有错误,欢迎指出。