判断题
1-1
在散列表中,所谓同义词就是具有相同散列地址的两个元素
T
1-2
在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。
F
1-3
若用平方探测法解决冲突,则插入新元素时,若散列表容量为质数,插入就一定可以成功。
F
1-4
将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为M/S。
T
1-5
在散列中,函数“插入”和“查找”具有同样的时间复杂度。
T
1-6
即使把2个元素散列到有100个单元的表中,仍然有可能发生冲突。
T
1-7
在检索一个单词时,用哈希算法比用搜索树要快。
T
1-8
将 10 个元素散列到 100000 个单元的哈希表中,一定不会产生冲突。
F
1-9
采用平方探测冲突解决策略(hi(k)=(H(k)+i2)%11, 注意:不是±i2),将一批散列值均等于2的对象连续插入一个大小为11的散列表中,那么第4个对象一定位于下标为0的位置。
T
选择题
2-1
在散列表中,所谓同义词就是:(具有相同散列地址的两个元素)
2-2
在下列查找的方法中,平均查找长度与结点个数无关的查找方法是:(利用哈希(散列)表)
2-3
对包含N个元素的散列表进行查找,平均查找长度为:(不确定)
2-4
将M个元素存入用长度为S的数组表示的散列表,则该表的装填因子为:(M/S)
2-5
散列冲突可以被描述为:(两个有不同键值的元素具有相同的散列地址)
2-6
将10个元素散列到100000个单元的哈希表中,是否一定产生冲突?可能会
2-7
设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:11
2-8
假定有K个关键字互为同义词,若用线性探测法把这K个关键字存入散列表中,至少要进行多少次探测?K(K+1)/2
2-9
采用线性探测法解决冲突时所产生的一系列后继散列地址:(可以大于或小于但不等于原散列地址)
2-10
将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?(0.45)
2-11
给定散列表大小为11,散列函数为H(Key)=Key%11。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%11将关键字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是:(5)
2-12
给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问:此时该散列表的平均不成功查找次数是多少?( 21/11 )
2-13
从一个具有N个结点的单链表中查找其值等于X的结点时,在查找成功的情况下,需平均比较多少个结点?(N+1)/2
2-14
若用平方探测法解决冲突,则插入新元素时,以下陈述正确的是:(插入不一定能成功)
2-15
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用分离链接法解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
1, 3, 3, 9, 4, 9, 9
2-16
给定输入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函数 h(X)=X%10。如果用大小为10的散列表,并且用开放定址法以及一个二次散列函数h2(X)=7−(X%7)解决冲突,则输入各项经散列后在表中的下标为:(-1表示相应的插入无法成功)
1, 3, 4, 9, 7, 5, -1
2-17
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:
N(N+1)/2
2-18
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:N(N+1)/2
2-19
若N个关键词被散列映射到同一个单元,并且用分离链接法解决冲突,则找到这N个关键词所用的比较次数为:N(N+1)/2
2-20
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:2
2-21
给定散列表大小为17,散列函数为H(Key)=Key%17。采用平方探测法处理冲突:hi(k)=(H(k)±i2)%17将关键字序列{ 23, 22, 7, 26, 9, 6 }依次插入到散列表中。那么元素6存放在散列表中的位置是:2
2-22
将元素序列{18, 23, 4, 26, 31, 33, 17, 39}按顺序插入一个初始为空的、大小为13的散列表中。散列函数为:H(Key)=Key%13,采用线性探测法处理冲突。问:当第一次发现有冲突时,散列表的装填因子大约是多少?
0.31
2-23
给定散列表大小为11,散列函数为H(Key)=Key%11。按照线性探测冲突解决策略连续插入散列值相同的5个元素。问:此时该散列表的平均不成功查找次数是多少?26/11
2-24
现有长度为 7、初始为空的散列表HT,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT后,查找成功的平均查找长度是:2
2-25
现有长度为 11 且初始为空的散列表 HT,散列函数是 H(key)=key%7,采用线性探查(线性探测再散列)法解决冲突。将关键字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失败的平均查找长度是:6
2-26
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用线性探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.33
2-27
设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 H(key)=key%17,采用平方探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.25
2-28
设有一组关键字 { 92,81, 58,21,57,45,161,38,117 },散列函数为 h(key)=key%13,采用下列双散列探测方法解决第 i 次冲突:h(key)=(h(key)+i×h2(key))%13,其中 h2(key)=(key%11)+1。试在 0 到 12 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 1.67
2-29
已知线性表的关键字集合 { 21,11, 13,25,48,6,39,83,30,96,108 },散列函数为 h(key)=key%11,采用分离链接法解决冲突。则成功查找的平均查找长度为 1.36
2-30
将关键字序列 { 7,8,30,11,18,9,14 },散列存储到散列列表中,散列表的存储空间是一个下标从 0 开始的一维数组。处理冲突采用线性探测法。散列函数为 h(key)=(key×3)% 表长,要求装入因子为 0.7。则成功查找的平均查找长度为 1.14
2-31
已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:5
2-32
用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:7
2-33
在有n(n>1000)个元素的升序数组A中查找关键字x。查找算法的伪代码如下所示:
本算法与二分查找(折半查找)算法相比,有可能具有更少比较次数的情形是:当x接近数组开头处
2-34
下列二叉树中,可能成为折半查找判定树(不含外部结点)的是:
2-35
对一个长度为 10 的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是(3)。
填空题
3-1
在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为 4
3-2
哈希表是通过将查找码按选定的哈希函数和解决冲突的方法,把结点按查找码转换为地址进行存储的线性表。哈希方法的关键是选择好的哈希函数和 处理冲突的方法。一个好的哈希函数其转换地址应尽可能均匀,而且函数运算应尽可能简单。
3-3
直接定址法法构造的哈希函数肯定不会发生冲突。
3-4
假定查找有序表A[1…12]中每个元素的概率相等,则进行二分查找时的平均查找长度为37/12
3-5
可以唯一的标识一个记录的关键字称为主关键字