免费智能真题库 > 历年试卷 > 程序员 > 2013年下半年 程序员 上午试卷 综合知识
  第42题      
  知识点:   哈希表   查找
  关键词:   冲突   存储单元   关键码   哈希   散列函数   线性探查   函数        章/节:   常用算法       

 
若关键码序列(23,35,14,49,8,12,30,7)采用散列法进行存储和查找。设散列函数为H(Key)=Key%11,采用线性探查法(顺序地探查可用存储单元)解决冲突,尚未构造完成的散列表如下所示,则元素12应存入哈希地址单元(42)。
 
 
  A.  0
 
  B.  4
 
  C.  11
 
  D.  12
 
 
 

 
  第39题    2014年下半年  
   60%
在数据结构中,(39)是与存储结构无关的术语。
  第37题    2011年下半年  
   44%
在有11个元素的有序数组a[1...11]中进行二分查找(即折半查找),依次与(37)比 较后,成功找到元素a[5]。
  第41题    2014年上半年  
   38%
某二叉排序树如下所示,新的元素45应作为(41)插入该二叉树中。
   知识点讲解    
   · 哈希表    · 查找
 
       哈希表
        1)哈希表的定义
        根据设定的哈希函数H(key)和处理冲突的方法,将一组关键字映射到一个有限的连续地址集上,并以关键字在地址集中的像作为记录在表中的存储位置,这种表称为哈希表,也称散列表。这一过程所得到的存储位置称为散列地址,由此形成的查找方法称为散列查找。当选择了某个散列函数后,不同的关键字可能与同一个散列地址相对应,这种现象称为冲突。
        对于哈希表,主要考虑两个问题:一是如何构造哈希函数,二是如何解决冲突。
        2)哈希函数的构造方法
        常用的哈希函数的构造方法有直接定址法、数字分析法、平方取中法、折叠法、随机数法和除留余数法等。
        3)处理冲突的方法
        解决冲突就是为出现冲突的关键字找到另一个"空"的哈希地址。常见的冲突处理方法有:开放地址法、链地址法、再哈希法等。
 
       查找
        1)顺序查找
        顺序查找又称线性查找,顺序查找的过程是从线性表的一端开始,依次逐个与表中元素的关键字值进行比较,如果找到其关键字与给定值相等的元素,则查找成功;若表中所有元素的关键字与给定值比较都不成功,则查找失败。
        2)折半查找
        折半查找的过程是先将给定值与有序线性表中间位置上元素的关键字进行比较,若两者相等,则查找成功;若给定值小于该元素的关键字,那么选取中间位置元素关键字值小的那部分元素作为新的查找范围,然后继续进行折半查找;如果给定值大于该元素的关键字,那么选取比中间位置元素关键字值大的那部分元素作为新的查找范围,然后继续进行折半查找,直到找到关键字与给定值相等的元素或查找范围中的元素数量为零时结束。
        3)分块查找
        在分块查找过程中,首先将表分成若干块,每一块中关键字不一定有序,但块之间是有序的。此外,还建立了一个索引表,索引表按关键字有序。分块查找过程需分两步进行:先确定待查记录所在的块;然后在块中顺序查找。
        4)哈希表及其查找
        根据设定的哈希函数H(key)和处理冲突的方法,将一组关键字映射到一个有限的连续地址集上,并以关键字在地址集中的像作为记录在表中的存储位置,这种表称为哈希表,也称散列表。这一过程所得到的存储位置称为散列地址,由此形成的查找方法称为散列查找。
   题号导航      2013年下半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第42题    在手机中做本题