判斷題
1.將M個元素存入用長度為S的數組表示的散列表,則該表的裝填因子為M/S。
2.在散列中,函數“插入”和“查找”具有同樣的時間復雜度。
3.在散列表中,所謂同義詞就是被不同散列函數映射到同一地址的兩個元素。
4.采用平方探測沖突解決策略(hi(k)=(H(k)+i2)%11, 注意:不是±i2),將一批散列值均等於2的對象連續插入一個大小為11的散列表中,那么第4個對象一定位於下標為0的位置。
5.若用平方探測法解決沖突,則插入新元素時,若散列表容量為質數,插入就一定可以成功。
6.即使把2個元素散列到有100個單元的表中,仍然有可能發生沖突。
選擇題
1.在散列表中,所謂同義詞就是:
B.具有相同散列地址的兩個元素
C.被映射到不同散列地址的一個元素
D.被不同散列函數映射到同一地址的兩個元素
2.在下列查找的方法中,平均查找長度與結點個數無關的查找方法是:
B.二分法
C.利用哈希(散列)表
D.利用二叉搜索樹
3.對包含N個元素的散列表進行查找,平均查找長度為:
B.O(logN)
C.O(N)
D.不確定
不確定是否會發生沖突
4.(neuDS)若結點的存儲地址與其關鍵字之間存在某種映射關系,則稱這種存儲結構為( )。
B.鏈式存儲結構
C.索引存儲結構
D.散列存儲結構
5.將M個元素存入用長度為S的數組表示的散列表,則該表的裝填因子為:
B.M−S
C.M×S
D.M/S
6.對哈希(HASH)函數H(k)= k MOD m, 一般來說,m應取
B.很大的數
C.偶數
D.奇數
7.一個哈希函數被認為是“好的”,如果它滿足條件()。
B.滿足(B)和(C)
C.保證不產生沖突
D.所有哈希地址在表長范圍內
8.散列函數有一個共同性質,即函數值應按() 取其值域的每一個值。
B.最大概率
C.平均概率
D.同等概率
9.下面關於哈希查找的說法正確的是()。
B.除留余數法是所有哈希函數中最好的
C.哈希函數構造得越復雜越好,因為這樣隨機性好,沖 突小
D.若需在哈希表中刪去一個元素,不管用何種方法解決 沖突都只要簡單的將該元素刪去即可
10.哈希表的平均查找長度是()的函數。
B.哈希表的裝填因子
C.哈希函數
D.表中元素的多少
11.將10個元素散列到100000個單元的哈希表中,是否一定產生沖突?
B.可能會
C.一定不會
D.有萬分之一的可能會
12.設散列表的地址區間為[0,16],散列函數為H(Key)=Key%17。采用線性探測法處理沖突,並將關鍵字序列{ 26,25,72,38,8,18,59 }依次存儲到散列表中。元素59存放在散列表中的地址是:
B.9
C.10
D.11
13.假定有K個關鍵字互為同義詞,若用線性探測法把這K個關鍵字存入散列表中,至少要進行多少次探測?
B.K
C.K+1
D.K(K+1)/2
14.采用線性探測法解決沖突時所產生的一系列后繼散列地址:
B.必須小於等於原散列地址
C.可以大於或小於但不等於原散列地址
D.對地址在何處沒有限制
15.將元素序列{18,23,11,20,2,7,27,33,42,15}按順序插入一個初始為空的、大小為11的散列表中。散列函數為:H(Key)=Key%11,采用線性探測法處理沖突。問:當第一次發現有沖突時,散列表的裝填因子大約是多少?
B.0.45
C.0.64
D.0.73
16.給定散列表大小為11,散列函數為H(Key)=Key%11。采用平方探測法處理沖突:hi(k)=(H(k)±i2)%11將關鍵字序列{ 6,25,39,61 }依次插入到散列表中。那么元素61存放在散列表中的位置是:
B.6
C.7
D.8
17.給定散列表大小為11,散列函數為H(Key)=Key%11。按照線性探測沖突解決策略連續插入散列值相同的4個元素。問:此時該散列表的平均不成功查找次數是多少?
B.4/11
C.21/11
D.不確定
查找不成功的意思是在一次不成功查找中,除了最后一次檢查以外,其他每次都要檢查一個被占用但並不包含所求關鍵字的槽。
設Ci為第i次查找不成功的次數,那么則有:
18.若用平方探測法解決沖突,則插入新元素時,以下陳述正確的是:
B.插入不一定能成功
C.插入一定不能成功
D.若散列表容量為質數,插入就一定可以成功
19.散列沖突可以被描述為:
B.兩個有不同數據的元素具有相同的鍵值
C.兩個有不同鍵值的元素具有相同的散列地址
D.兩個有相同鍵值的元素具有不同的散列地址
20.若N個關鍵詞被散列映射到同一個單元,並且用分離鏈接法解決沖突,則找到這N個關鍵詞所用的比較次數為:
B.N(N−1)/2
C.N+1
D.N
21.采用線性探測沖突解決策略,hi(k)=(H(k)+i)mod 11,將散列函數值分別等於2、2、3、3的四個對象a1、a2、a3、a4都插入一個大小為11的空散列表(哈希表)中。在不同的插入順序中,哪句有關插入后散列表平均成功查找長度的判斷是錯的?
B.按a1、a3、a2、a4順序和按a3、a1、a2、a4順序,平 均成功查找長度一樣;
C.按a1、a3、a2、a4順序和按a4、a1、a2、a3順序,平 均成功查找長度一樣;
D.按任何插入順序,其平均成功查找長度都一樣.
22.__是HASH查找的沖突處理方法:
B.平方取中法
C.二分法
D.開放地址法
23.下面關於哈希查找的說法,不正確的是( )。
B.采用鏈地址法處理沖突時,若插入規定總是在鏈首, 則插入任一個元素的時間是相同的
C.用鏈地址法處理沖突,不會引起二次聚集現象
D.用鏈地址法處理沖突,適合表長不確定的情況
一次處理沖突過后,可能會影響其他元素的查找時間。
24.給定輸入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函數 h(X)=X%10。如果用大小為10的散列表,並且用分離鏈接法
解決沖突,則輸入各項經散列后在表中的下標為:(-1表示相應的插入無法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
25.給定輸入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函數 h(X)=X%10。如果用大小為10的散列表,並且用線性探測
解決沖突,則輸入各項經散列后在表中的下標為:(-1表示相應的插入無法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
26.給定輸入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函數 h(X)=X%10。如果用大小為10的散列表,並且用平方探測
解決沖突,則輸入各項經散列后在表中的下標為:(-1表示相應的插入無法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
27.給定輸入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函數 h(X)=X%10。如果用大小為10的散列表,並且用開放定址法以及一個二次散列函數h2(X)=7−(X%7)解決沖突,則輸入各項經散列后在表中的下標為:(-1表示相應的插入無法成功)
B.1, 3, 4, 9, 7, 5, -1
C.1, 3, 4, 9, 5, 0, 8
D.1, 3, 4, 9, 5, 0, 2
開放定址法公式:
二次散列函數的作用是當沖突發生時,代替di。
28.給定散列表大小為17,散列函數為H(Key)=Key%17。采用平方探測法處理沖突:hi(k)=(H(k)±i2)%17將關鍵字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:
B.2
C.6
D.15
29.給定散列表大小為17,散列函數為H(Key)=Key%17。采用平方探測法處理沖突:hi(k)=(H(k)±i2)%17將關鍵字序列{ 6, 22, 7, 26, 9, 40 }依次插入到散列表中。那么元素40存放在散列表中的位置是:
B.6
C.8
D.15
30.將元素序列{18, 23, 4, 26, 31, 33, 17, 39}按順序插入一個初始為空的、大小為13的散列表中。散列函數為:H(Key)=Key%13,采用線性探測法處理沖突。問:當第一次發現有沖突時,散列表的裝填因子大約是多少?
B.0.63
C.0.31
D.0.62
31.給定散列表大小為11,散列函數為H(Key)=Key%11。按照線性探測沖突解決策略連續插入散列值相同的5個元素。問:此時該散列表的平均不成功查找次數是多少?
B.5/11
C.1
D.不確定
同17題。
32.現有長度為 7、初始為空的散列表HT
,散列函數H(k)=k%7,用線性探測再散列法解決沖突。將關鍵字 22, 43, 15 依次插入到HT
后,查找成功的平均查找長度是:
B.1.6
C.2
D.3
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
元素 | 22 | 43 | 15 |
成功查找的次數計算:(1+2+3)/3=2。
33.現有長度為 11 且初始為空的散列表 HT,散列函數是 H(key)=key%7,采用線性探查(線性探測再散列)法解決沖突。將關鍵字序列 87,40,30,6,11,22,98,20 依次插入到 HT 后,HT 查找失敗的平均查找長度是:
B.5.25
C.6
D.6.29
這道題需要注意的是,在計算查找失敗的平均查找長度的時候,是不需要把下標6以后的元素計算進去的,因為散列函數根本映射不到位置7。
34.設數字 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 在大小為10的散列表中根據散列函數 h(X)=X%10得到的下標對應為 {1, 3, 4, 9, 5, 0, 2}。那么繼續用散列函數 “h(X)=X%表長”實施再散列並用線性探測法解決沖突后,它們的下標變為:
B.1, 3, 4, 9, 5, 0, 2
C.1, 12, 9, 13, 20, 19, 11
D.1, 12, 17, 0, 13, 8, 14
需要注意的是,再散列把表長增加兩倍之后,還需要取質數,所以是最終表長是 23。