哈希法
设哈希表维14,哈希函数时H(key)=key%11,表中已有数据的关键字维15,38,61,84共四个,现要将关键字维49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是:
A、8 B、3 C、5 D、9
15,38,61,84除11的余数分别为4,5,6,7,没有重复,因此分别就放在这4个下标 49除11的余数为5,发生冲突,因为是二次探测,所以接下来分别探测+1, -1, +4, -4, +9, -9... 显然5 + 1, 5 - 1的位置都有冲突,5 + 4的位置没有冲突 所以最后放入的位置是9对一个元素第一次计算的哈希地址为d,则第三次计算的哈希地址为:d+4为冲突生成地址的方法是 d±k² (k=1....n/2) k为 1 2 3 到 7
例 表长为11的哈希表中已填有关键字为17,60,29的记录,H(k)=k MOD 11,现有第4个记录,其关键字为38, 按线性探测法处理冲突的方法,将它填入表中。
H(38)=38 MOD 11=5 冲突
H1=(5+1) MOD 11=6 冲突
H2=(5+2) MOD 11=7 冲突
H3=(5+3) MOD 11=8 不冲突
- 中序遍历可以得到从小到大的序列。
- 单枝形态效率最低。二叉排序树在 形态下查找效率最低。
- 满二叉形态效率最高
- 静态查找表与动态查找表两者的根本差别在于操作不同。
- 对n个元素的表进行顺序查找,若查找每个元素的概率相同,则平时查找长度为(n+1)/2
- 适用于折半查找的存储方式及元素排列要求为:顺序存储,元素有序。
- 在有序表上查找数据时,在大部分情况下折半比顺序查找要快。如果序号为1则顺序查找更快,有时候是相同。所以是大部分,尤其当要查找的数比较靠后时更有用。
- 对22个记录的有序表进行折半查找,当查找失败时,至少要比较(4)次关键字,至多5次。解释:(22 个记录的有序表,其折半查找的判定树深度且该判定树不是满二叉树Log2(n+1)+1即查找失败时至多比较 5 次,至少比较 4 次
- 折半搜索与二叉树排序树的时间性能:有时不相同。
- 插入一个结点后不平衡,最低的不平衡结点为A,A的左孩子平衡因子为0,右孩子的平衡因子为1,则应用RL型 调整。
- m阶B-树,根结点至多有M棵子树。所有叶子都在同一层次上。非叶结点至少有m/2或m/2+1棵子树。相结点中的数据未必是有序的。
- B-树和B+树都是平衡多叉树。都可用于文件索引结构,都能有效的支持随机检索。
- M阶的B-树是M叉平衡排序树。
- 不存在特别好与坏的哈希函数,要视情况而定。
- 采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的,不会引起一次聚集现象。适合表长不确定情况。
- 采用线性探测法处理冲突,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的关键字:不一定都是同义词。
- 在对线性表进行折半查找时,要求线性表必须__b_____。
A.以顺序方式存储 B.以顺序方式存储,且结点按关键字有序排列
C.以链式方式存储 D.以链式方式存储,且结点按关键字有序排列
- 采用顺序查找法查找长度为n的线性表时,其平均查找长度为_c___ 。
A.n B.n/2 C.(n+1)/2 D.(n-1)/2
- 有一个有序表: 1,3,9,12,32,41,45,62,75,77,82,95,100
采用折半查找法查找值为82的记录时,要经_c___次关键字比较后,查找成功。
A.1 B.2 C.4 D.8
16.设哈希表长m=14,哈希函数h(key)=key%11。表中已有四个记录,关键字分别为15、38、61、84,采用二次探测法解决冲突。那么关键字为49的记录的哈希地址为__d____。
A.1 B.3 C.5 D.9
- 在下列各种查找方法中,只有_a____查找法的平均查找长度与表长n无关。
A.哈希查找 B.二叉查找树 C.折半查找 D.分块查找
- 在开放地址法中,由于哈希到同一个地址而引起的“堆积”现象,是由___b___ 产生的。
A.同义词之间发生冲突 B.非同义词之间发生冲突
C.同义词之间或非同义词之间发生冲突 D.哈希表“溢出”
- 在最坏的情况下,查找成功时二叉查找树的平均查找长度___c___ 。 A.小于线性表的平均查找长度 B.大于线性表的平均查找长度
C.与线性表的平均查找长度相同
D.无法与线性表的平均查找长度相比较
- 在哈希中采用线性探测法解决冲突时,产生的一系列后继哈希地址_c____。A.必须大于、等于原哈希地址 B.必须小于、等于原哈希地址
C.可以大于或小于但不能等于原哈希地址 D.地址大小没有具体限制
- 给出关键字序列:loop、if、for、while、repeat,依照创建二叉排序树算法,画出所对应的二叉排序树。该树的平均查找长度是多少?(拍照上传)
- 判定树:描述查找过程的二叉树叫判定树
- 折半查找在查找过程中进行的比较次数最多不超过其判定树的深度