设散列地址空间为0~m-1,k为关键字,用P去除k,将余数作为k的散列地址,即:h(k)=k%P,为了减少发生冲突的可能性,一般取P为( )
A.小于m的最大奇数 B.小于m的最大偶数 C.小于m的最大素数 D.小于m的最大合数
已知一个线性表(38,25,74,63,52,48),假定采用h(k)=k%7计算散列地址进行散列存储,存储地址为0-6,若引用线性探测的开放定地址法解决冲突,则在该散列表上进行查找成功的平均查找长度为( )。
A.1.5 B.1.7 C.2 D.2.3
解决散列法中出现的冲突问题常采用的方法是( )。
A.数字分析法、除留取余法、二次探测法
B.数字分析法、除留取余法、线性探测法
C.数字分析法、线性探测法、再哈希法
D.线性探测法、再哈希法、链地址法
下面关于哈希(Hash,杂凑)查找的说法正确的是()
A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小
B.除留余数法是所有哈希函数中最好的
C.不存在特别好与坏的哈希函数,要视情况而定
D.若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单的将该元素删去即可
下面关于哈希查找的说法,正确的是( )。
A.不存在特别好与坏的哈希函数,要视情况而定
C.哈希函数构造的越复杂越好,因为这样随机性好,冲突小
D.哈希表的平均查找长度有时也和记录总数有关
一个待散列的线性表为k={18,25,63,50,42,32,9},散列函数为H(k)=k MOD 9,与18发生冲突的元素有( )个。
A.1 B.2 C.3 D.4
在各种查找方法中,平均查找承担与结点个数n无关的查找方法是( )。
A.顺序查找
B.折半查找
C.哈希查找
D.分块查找
已知表长为25的哈希表,用除留取余法,按公式H(key)=key MOD p 建立哈希表,则p应取( )为宜。
A. 23 B. 24 C. 25 D. 26
下面关于哈希查找的说法,不正确的是( )。
A.采用链地址法处理冲突时,查找一个元素的时间是相同的
B.采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的
C.用链地址法处理冲突,不会引起二次聚集现象
D.用链地址法处理冲突,适合表长不确定的情况
在散列查找中,平均查找长度主要与( )有关。
A. 散列表长度
B. 散列元素个数
C. 装填因子
D. 处理冲突方法
设哈希表长m=15,哈希函数H(key) = key mod 13,关键码集合为{53, 17, 12, 61, 70, 87, 25, 64, 46},采用二次探测再散列方法处理冲突,则查找成功的平均查找长度为( )。
A.1.4 B.1.6 C.1.8 D.2.0
在哈希查找中,平均查找长度主要与()有关。
A.处理冲突的方法 B.装填因子
C.哈希元素的个数 D.哈希表长度
关于散列查找,下面说法正确的是( )。
A.再散列法处理冲突不会产生聚集
B.散列表的装填因子越大说明空间利用率越高,因此应使装填因子尽可能大
C.散列函数选择得好可以减少冲突现象
D.对任何关键码组合都可以找到不产生冲突的散列函数
适于对动态查找表进行高效率查找的组织结构为( )
A.有序表
B.分块有序表
C.二叉排序树
D.线性链表
散列查找方法一般适用于( )情况下的查找。
A.查找表为链表 B.查找表为有序列
C.关键码集合比地址集合大得多
D.关键码集合与地址集合存在对应关系
下列关于散列查找说法不正确的有几个( )。
采用链地址法解决冲突,查找一个元素的时间是相同的
采用链地址法解决冲突,若插入总是在链首,则播入任一个元素的时间是相同的
用链地址法解决冲突易引起聚集现象
再散列法不易产生聚集
设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的元素加到表中,用二次探测法解决冲突,则放入的位置是( )。
A.8 B.3 C.5 D.9
解决哈希冲突的主要方法有( )
A. 数字分析法、除余法、平方取中法
B. 数字分析法、除余法、线性探测法
C. 数字分析法、线性探测法、再哈希法
D. 开放地址法、再哈希法、链地址法
为一组关键码{87, 73, 25, 55, 90, 28, 31, 17, 101, 22, 3, 62}构造散列表,设散列函数为H(key) = key mod 11,在用链地址法处理后位于同一链表中的是( )。
A.81, 90 B.31, 101 C.3, 78 D.62, 73
对具有n个关键码的散列表进行查找,平均查找长度是( )。
A.O(log2n) B.O(n) C.O(nlog2n) D.与n无关
采用开放定址法解决冲突的散列查找中,发生聚集的原因主要是( )。
A.数据元素过多 B.装填因子过大
C.散列函数选择不当 D.解决冲突的算法不好
假设有10个关键码,他们具有相同的散列函数值,用线性探测法把这10个关键码存入散列表中至少需要做( )次探测。
A.110 B.100 C.55 D.45
以下与数据的存储结构无关的术语是( )。
A)循环队列 B)链表 C)哈希表 D)栈
采用线性探测法处理冲突,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的关键字 ( )。
A.不一定都是同义词 B.一定都是同义词
C.一定都不是同义词 D.都相同
在哈希查找中,冲突是指( )
A. 两个元素具有相同序号
B. 两个元素的关键字不同,而非关键字相同
C. 不同关键字对应到相同的存储地址
D. 元素过多
哈希法存储的基本思想是由决定元素的存储地址。
设散列表的长度为8,散列函数H(k)=k % 7,用线性探测法解决冲突,则根据一组初始关键字序列(8,15,16,22,30,32)构造散列表,查找成功的平均查找长度是。
设有n个键值互为同义词,若用线性探查法处理冲突,把这n个键值存于表长为m(m>n)的散列表中,至少要进行次探查。
散列表中解决冲突的两种方法是和。
下列算法实现在顺序散列表中查找值为x的关键字,采用线性探测处理冲突,请在下划线处填上正确的语句。
struct record{int key; int flag; int others;};
int hashsqsearch(struct record hashtable[ ],int k)
{
inti,j; j=i=k % p;
while (hashtable[j].key != k && hashtable[j].flag != 0){j = ( ) % m; if (i==j) return(-1);}
if ( ) return(j); else return(-1);
}
哈希函数hash = key mod p,使用拉链法处理冲突。按照要求完成创建哈希表的代码。
Typedef struct node
int key;
struct node *next;
} lklist;
void createlkhash(lklist *hashtable[], int a[], int n)
int i, k;
lklist *s;
for (i = 0; i < p; i++)
;
for (i = 0; i < n; i++)
s = (lklist *)malloc(sizeof(lklist));
s->key = a[i];
k = a[i] % p;
if (hashtable[k] == NULL)
s->next = NULL;
else
s->next = hashtable[k]->next;
设有散列函数H和键值k1、k2,若k1≠k2,且H(k1)= H(k2),则称k1、k2是。
在散列表中,装填因子。值越大,则插入记录时发生冲突的可能性。
在散列表的查找过程中与给定值K进行比较的次数取决于、和。
根据给出的代码段,补充一个哈希查找的程序,在该段程序中冲突解决方法为:双散列函数探查法哈希函数关键字为:人名字母ASCII相加哈希函数为:关键字%M,从而映射到哈希表中的位置。**请注意看注释!!再补充完成查找的过程**。图中第1行为输入,第3行为输出(标点为半角符号)。
输入Number个数(大于0,不多于11个),组织一个哈希表,哈希函数是H(K)=Kmod7,哈希表长度为11个单元,起始地址为0(未使用单元显示0值),要求用线性探测方法解决冲突。其中,第1、3、5行是提示信息,第2行输入总元素个数,第4行输入各元素值,第6行为输出结果。
设有一组关键字{9,1,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7,表长为10,用开放地址法的二次探测方法Hi=( H(key) + di) mod 10解决冲突(其中di = 1, 4, 9, ... , n平方)。
1.构造哈希表。
2.计算查找成功时的平均查找长度。
0 1 2 3 4 5 6 7 8 9
14 1 9 23 84 27 55 20
设哈希函数H(k)=3K mod 11,散列地址空间为0~10,对关键字序列(32,13,49,24,38,21,4,12)按线性探测解决冲突的方法构造哈希表。分别求出等概率下查找成功时和查找失败时的平均查找长度ASLsucc和ASLunsucc。
0 1 2 3 4 5 6 7 8 9 10
4 12 49 38 13 24 32 21
1 1 1 2 1 2 1 2
ASL成功=(5+6)/8=11/8
ASL失败=(1+2+1+8+7+6+5+4+3+2+1)/11=40/11
采用哈希函数H(k) = 3*k mod 13,使用线性探测开放地址法处理冲突,地址空间为[0..12],关键字序列为22, 41,53,46,30,13,1,67,51。
2.计算装填因子。
3.计算等概率下查找成功的平均查找长度。
0 1 2 3 4 5 6 7 8 9 10 11 12
13 22 53 1 41 67 46 51 30
已知待散列的线性表为(36,15,40,63,22),散列用的一维地址空间为[0..6],假定选用的散列函数是H(K)= K mod 7,若发生冲突采用线性探查法处理,试:
(1)计算出每一个元素的散列地址并在下图中填写出散列表(要有计算过程,只写结果者不给分):
` 0 1 2 3 4 5 6
(2)求出在查找每一个元素概率相等情况下查找成功的平均查找长度。
给定关键字序列(53,17,12,66,58,70,87,25,56,60),生成一棵二叉排序树。
1.写出该二叉排序树的后序序列。
2.计算等概率情况下查找成功的平均查找长度。
选取哈希函数H(k)=(k)MOD 11。用二次探测再散列处理冲突,试在0-10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度。