第八章 查找

常见概念:

1.列表:由同一类型的数据元素(或记录)构成的集合,可以利用任意数据结构实现

2.基于线性表的查找方法:顺序查找法、折半查找法、分块查找法

  a.顺序查找法:用所给的关键字与线性表中各元素的关键字逐个比较,直到成功或失败。存储结构通常为顺序结构也可以为链式结构。
  b.折半查找法:对列表有两个要求:必须采用顺序存储结构、必须按关键字大小有序排列。
  c.分块查找法:略

3.基于树的查找方法:二叉排序树,平衡二叉排序树(AVL树)、B树

4.哈希:略

1.采用线性探测法解决冲突时所产生的一系列后继散列地址:(C)

A.必须大于等于原散列地址

B.必须小于等于原散列地址

C.可以大于或小于但不等于原散列地址

D.对地址在何处没有限制

1.常用的解决冲突的方法:开放定址法(再散列法)、再哈希法、链地址法、建立公共溢出区法;

2.开放定址法中由于增量序列的取值方式不同,相应的再散列方式也不同

a.线性探测再散列

b.二次探测再散列

c.伪随机探测再散列

3.原因:

线性探测法是一种常用的解决散列冲突的方法。当发生冲突时,线性探测法会依次检查散列地址的下一个位置,直到找到一个空闲的位置来存储冲突的元素。

在线性探测法中,如果发生冲突,即要插入的位置已经被占用,那么会继续向后查找下一个位置,直到找到一个空闲的位置。这个查找的过程是按照一定的规则进行的,通常是按照线性递增的方式,即每次查找的位置是当前位置的下一个位置。

因此,当发生冲突时,线性探测法所产生的一系列后继散列地址可以大于或小于原散列地址,但不会等于原散列地址。这是因为线性探测法是按照线性递增的方式进行查找,所以后继散列地址会逐渐向后移动,直到找到一个空闲的位置。

总结起来,线性探测法解决冲突时所产生的一系列后继散列地址可以大于或小于但不等于原散列地址,是因为线性探测法按照线性递增的方式进行查找空闲位置。这种方法可以有效地解决散列冲突,但可能会导致散列表的装载因子增加,从而影响查找的效率。

2. 对二叉搜索树进行什么遍历可以得到从小到大的排序序列?(C)

A.前序遍历

B.后序遍历

C.中序遍历

D.层次遍历

二叉搜索树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值。

若要得到从小到大的排序,即 左 根 右 ;即中序遍历

3. 已知一个长度为16的顺序表L,其元素按关键字有序排列。若采用二分查找法查找一个L中不存在的元素,则关键字的比较次数最多是:(B)

A.4

B.5

C.6

D.7

若查找一个L中不存在的元素

1.8 16

2.12 16

3.14 16

4 16 16

5.

即:log2(n)+1=4+1=5;

4.用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:(A)

A.7

B.10

C.50

D.99

【log2(100)】+1=7

5. 设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。元素59存放在散列表中的地址是:(D)

A.8

B.9

C.10

D.11

由题意可知

将第一次没有起冲突的先放进去并标红

26%17=9(标红)

25%17=8(标红)

72%17=4(标红)

38%17=4

8%17=8

18%17=1(标红)

59%17=8

第八章 查找_第1张图片 

6.现有长度为 7、初始为空的散列表HT,散列函数H(k)=k%7,用线性探测再散列法解决冲突。将关键字 22, 43, 15 依次插入到HT后,查找成功的平均查找长度是:(C)

A.1.5

B.1.6

C.2

D.3

22%7=1(1次)

43%7=1(2次)

15%7=1(3次)

所以平均查找长度=总次数/关键字的所有个数

即:(1+2+3)/3=2

7. 假设一散列表的大小是11,散列函数是H(key)=key mod 11,用线性探测法解决冲突。先将4个元素{14,38,61,86}按顺序插入初始为空的散列表中。如果再插入元素49,则该元素被插入到表中哪个位置(下标)?(D)

A.4

B.5

C.6

D.7

14%11=3

38%11=5

61%11=6

86%11=9

49%11=5

第八章 查找_第2张图片 

8. 顺序查找法适合于存储结构为( A)的线性表。

A.散列存储

B.顺序存储或链式存储(定义)

C.压缩存储

D.索引存储

9.在哈希函数H(key)=key%p中,p值最好取(C )。

A.只能等于表长

B.只能小于表长

C.小于等于表长的最大素数

D.任意值

10.在散列存储中,装填因子α的值越大,则( A)。

A.存取元素时发生冲突的可能性就越大

B.存取元素时发生冲突的可能性就越小

C.存取元素时不可能发生冲突

D.毫无影响

装填因子α可描述哈希表的装满长度,α=哈希表中元素个数/哈希表的长度

显然,α越小,发生冲突的可能性越小,α越大,发生冲突的可能性越大

你可能感兴趣的:(数据结构,数据结构,算法,开发语言,c++,c语言)