數據結構-散列查找


判斷題

1.將M個元素存入用長度為S的數組表示的散列表,則該表的裝填因子為M/S

     T      F

2.在散列中,函數“插入”和“查找”具有同樣的時間復雜度。

     T      F

3.在散列表中,所謂同義詞就是被不同散列函數映射到同一地址的兩個元素。

     T      F

4.采用平方探測沖突解決策略(hi(k)=(H(k)+i2)%11, 注意:不是±i2),將一批散列值均等於2的對象連續插入一個大小為11的散列表中,那么第4個對象一定位於下標為0的位置。

     T      F

5.若用平方探測法解決沖突,則插入新元素時,若散列表容量為質數,插入就一定可以成功。

     T      F

6.即使把2個元素散列到有100個單元的表中,仍然有可能發生沖突。

     T      F

選擇題

1.在散列表中,所謂同義詞就是:

     A.兩個意義相近的單詞
     B.具有相同散列地址的兩個元素
     C.被映射到不同散列地址的一個元素
     D.被不同散列函數映射到同一地址的兩個元素

2.在下列查找的方法中,平均查找長度與結點個數無關的查找方法是:

     A.順序查找
     B.二分法
     C.利用哈希(散列)表
     D.利用二叉搜索樹

3.對包含N個元素的散列表進行查找,平均查找長度為:

     A.O(1)
     B.O(logN)
     C.O(N)
     D.不確定

不確定是否會發生沖突

4.(neuDS)若結點的存儲地址與其關鍵字之間存在某種映射關系,則稱這種存儲結構為( )。

     A.順序存儲結構
     B.鏈式存儲結構
     C.索引存儲結構
     D.散列存儲結構

5.將M個元素存入用長度為S的數組表示的散列表,則該表的裝填因子為:

     A.S+M
     B.M−S
     C.M×S
     D.M/S

6.對哈希(HASH)函數H(k)= k MOD m, 一般來說,m應取

     A.素數
     B.很大的數
     C.偶數
     D.奇數
m如果不是質數,會導致數據分布集中在幾個點中

7.一個哈希函數被認為是“好的”,如果它滿足條件()。

     A.哈希地址分布均勻
     B.滿足(B)和(C)
     C.保證不產生沖突
     D.所有哈希地址在表長范圍內

8.散列函數有一個共同性質,即函數值應按() 取其值域的每一個值。

     A.最小概率
     B.最大概率
     C.平均概率
     D.同等概率

9.下面關於哈希查找的說法正確的是()。

     A.不存在特別好的哈希函數,要視情況而定
     B.除留余數法是所有哈希函數中最好的
     C.哈希函數構造得越復雜越好,因為這樣隨機性好,沖 突小
     D.若需在哈希表中刪去一個元素,不管用何種方法解決 沖突都只要簡單的將該元素刪去即可

10.哈希表的平均查找長度是()的函數。

     A.哈希表的長度
     B.哈希表的裝填因子
     C.哈希函數
     D.表中元素的多少

11.將10個元素散列到100000個單元的哈希表中,是否一定產生沖突?

     A.一定會
     B.可能會
     C.一定不會
     D.有萬分之一的可能會

12.設散列表的地址區間為[0,16],散列函數為H(Key)=Key%17。采用線性探測法處理沖突,並將關鍵字序列{ 26,25,72,38,8,18,59 }依次存儲到散列表中。元素59存放在散列表中的地址是:

     A.8
     B.9
     C.10
     D.11

13.假定有K個關鍵字互為同義詞,若用線性探測法把這K個關鍵字存入散列表中,至少要進行多少次探測?

     A.K−1
     B.K
     C.K+1
     D.K(K+1)/2

14.采用線性探測法解決沖突時所產生的一系列后繼散列地址:

     A.必須大於等於原散列地址
     B.必須小於等於原散列地址
     C.可以大於或小於但不等於原散列地址
     D.對地址在何處沒有限制

15.將元素序列{18,23,11,20,2,7,27,33,42,15}按順序插入一個初始為空的、大小為11的散列表中。散列函數為:H(Key)=Key%11,采用線性探測法處理沖突。問:當第一次發現有沖突時,散列表的裝填因子大約是多少?

     A.0.27
     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存放在散列表中的位置是:

     A.5
     B.6
     C.7
     D.8

17.給定散列表大小為11,散列函數為H(Key)=Key%11。按照線性探測沖突解決策略連續插入散列值相同的4個元素。問:此時該散列表的平均不成功查找次數是多少?

     A.1
     B.4/11
     C.21/11
     D.不確定

查找不成功的意思是在一次不成功查找中,除了最后一次檢查以外,其他每次都要檢查一個被占用但並不包含所求關鍵字的槽。

設Ci為第i次查找不成功的次數,那么則有:

\[\color{red}{ASL_{unsucc} = \frac{\sum\limits_{i=1}^{n}C_{i}}{n}} \]

18.若用平方探測法解決沖突,則插入新元素時,以下陳述正確的是:

     A.插入一定可以成功
     B.插入不一定能成功
     C.插入一定不能成功
     D.若散列表容量為質數,插入就一定可以成功

19.散列沖突可以被描述為:

     A.兩個元素除了有不同鍵值,其它都相同
     B.兩個有不同數據的元素具有相同的鍵值
     C.兩個有不同鍵值的元素具有相同的散列地址
     D.兩個有相同鍵值的元素具有不同的散列地址

20.若N個關鍵詞被散列映射到同一個單元,並且用分離鏈接法解決沖突,則找到這N個關鍵詞所用的比較次數為:

     A.N(N+1)/2
     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的空散列表(哈希表)中。在不同的插入順序中,哪句有關插入后散列表平均成功查找長度的判斷是錯的?

     A.按a1、a2、a3、a4順序和按a1、a3、a4、a2 順序,平均成功查找長度一樣;
     B.按a1、a3、a2、a4順序和按a3、a1、a2、a4順序,平 均成功查找長度一樣;
     C.按a1、a3、a2、a4順序和按a4、a1、a2、a3順序,平 均成功查找長度一樣;
     D.按任何插入順序,其平均成功查找長度都一樣.

22.__是HASH查找的沖突處理方法:

     A.求余法
     B.平方取中法
     C.二分法
     D.開放地址法

23.下面關於哈希查找的說法,不正確的是( )。

     A.采用鏈地址法處理沖突時,查找一個元素的 時間是相同的
     B.采用鏈地址法處理沖突時,若插入規定總是在鏈首, 則插入任一個元素的時間是相同的
     C.用鏈地址法處理沖突,不會引起二次聚集現象
     D.用鏈地址法處理沖突,適合表長不確定的情況

一次處理沖突過后,可能會影響其他元素的查找時間。

24.給定輸入序列 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 以及散列函數 h(X)=X%10。如果用大小為10的散列表,並且用分離鏈接法解決沖突,則輸入各項經散列后在表中的下標為:(-1表示相應的插入無法成功)

     A.1, 3, 3, 9, 4, 9, 9
     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表示相應的插入無法成功)

     A.1, 3, 3, 9, 4, 9, 9
     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表示相應的插入無法成功)

     A.1, 3, 3, 9, 4, 9, 9
     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表示相應的插入無法成功)

     A.1, 3, 3, 9, 4, 9, 9
     B.1, 3, 4, 9, 7, 5, -1
     C.1, 3, 4, 9, 5, 0, 8
     D.1, 3, 4, 9, 5, 0, 2

開放定址法公式:

\[\color{red}{h_{i}(key) = (h(key) +d_{i})\space mod\space TableSize} \]

二次散列函數的作用是當沖突發生時,代替di

28.給定散列表大小為17,散列函數為H(Key)=Key%17。采用平方探測法處理沖突:hi(k)=(H(k)±i2)%17將關鍵字序列{ 6, 22, 7, 26, 9, 23 }依次插入到散列表中。那么元素23存放在散列表中的位置是:

     A.0
     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存放在散列表中的位置是:

     A.2
     B.6
     C.8
     D.15

30.將元素序列{18, 23, 4, 26, 31, 33, 17, 39}按順序插入一個初始為空的、大小為13的散列表中。散列函數為:H(Key)=Key%13,采用線性探測法處理沖突。問:當第一次發現有沖突時,散列表的裝填因子大約是多少?

     A.0.54
     B.0.63
     C.0.31
     D.0.62

31.給定散列表大小為11,散列函數為H(Key)=Key%11。按照線性探測沖突解決策略連續插入散列值相同的5個元素。問:此時該散列表的平均不成功查找次數是多少?

     A.26/11
     B.5/11
     C.1
     D.不確定

同17題。

32.現有長度為 7、初始為空的散列表HT,散列函數H(k)=k%7,用線性探測再散列法解決沖突。將關鍵字 22, 43, 15 依次插入到HT后,查找成功的平均查找長度是:

     A.1.5
     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 查找失敗的平均查找長度是:

     A.4
     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%表長”實施再散列並用線性探測法解決沖突后,它們的下標變為:

     A.11, 3, 13, 19, 4, 0, 9
     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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM