Hash表的平均查詢長度ASL計算方法

2022-07-07 23:48:14 字數 2030 閱讀 4119

asl指的是 平均查詢時間

關鍵字序列:(7、8、30、11、18、9、14)

雜湊函式:

h(key) = (key x 3) mod 7

裝載因子:

0.7處理衝突:線性探測再雜湊法

查詢成功的asl計算方法:

因為現在的資料是7個,填充因子是0.7。所以陣列大小=7/0.7=10,即寫出來的雜湊表大小為10,下標從0~9。 

第乙個元素7,帶入雜湊函式,計算得0。 

第二個元素8,帶入雜湊函式,計算得3。 

第三個元素30,帶入雜湊函式,計算得6。 

第四個元素11,帶入雜湊函式,計算得5。 

第五個元素18,帶入雜湊函式,計算得5;此時和11衝突,使用線性探測法,得7。 

第六個元素9,帶入雜湊函式,計算得6;此時和30衝突,使用線性探測法,得8。 

第七個元素14,帶入雜湊函式,計算得0;此時和7衝突,使用線性探測法,得1。 

所以雜湊表:位址0

1234

5678

9key714

8113018

9所以查詢成功的計算: 

如果查詢7,則需要查詢1次。 

如果查詢8,則需要查詢1次。 

如果查詢30,則需要查詢1次。 

如果查詢11,則需要查詢1次。 

如果查詢18,則需要查詢3次:第一次查詢位址5,第二次查詢位址6,第三次查詢位址7,查詢成功。 

如果查詢9,則需要查詢3次:第一次查詢位址6,第二次查詢位址7,第三次查詢位址8,查詢成功。 

如果查詢位址14,則需要查詢2次:第一次查詢位址0,第二次查詢位址1,查詢成功。 

所以,asl=(1+2+1+1+1+3+3)/ 7=12/ 7

查詢不成功的asl計算方法:

鑑於網路上有各種版本,本人認為此種計算方法比較合理。驗證例項可以參考2023年的計算機408考研真題的第一道計算大題和答案。

1. 定義什麼叫查詢不成功

舉個例子來說吧。在已知上面雜湊表的基礎上,如果要查詢key為4的關鍵字。根據雜湊函式可以計算hash(key)=hash(4)=5。此時在位址為5的地方取出那個數字,發現key=11,不等於4。這就說明在裝填的時候會發生衝突。根據衝突處理方法,會繼續檢測位址為6的值,發現key=30,依然不等。這個時候到了位址為6,但是依然沒有找到。那麼就說明根本就沒有key=4這個關鍵字,說明本次查詢不成功。

再舉乙個例子。查詢key為0的關鍵字,根據雜湊函式可以計算hash(key)=hash(0)=0。此時在位址為0的地方取出那個數字,發現key=7,不等於0。這就說明在裝填的時候會發生衝突。根據衝突處理方法,會繼續檢測位址為1的值,發現key=14,依然不等。這個時候到了位址為3,發現為空依然沒有找到。所以停止查詢,本次查詢不成功。因為如果key=0這個關鍵字存在的話,依照衝突處理函式,就一定能找到它。總不能丟了吧。

2. 根據第一點定義的不成功,依次推下去:

查詢位址為0的值所需要的次數為3, 

查詢位址為1的值所需要的次數為2, 

查詢位址為2的值所需要的次數為1, 

查詢位址為3的值所需要的次數為2, 

查詢位址為4的值所需要的次數為1, 

查詢位址為5的值所需要的次數為5, 

查詢位址為6的值所需要的次數為4。 

3.計算

查詢不成功asl=(3+2+1+2+1+5+4)/ 7=18/ 7

Hash表的平均查詢長度ASL計算方法

hash表的 查詢成功的asl 和 查詢不成功的asl asl指的是 平均查詢時間 關鍵字序列 7 8 30 11 18 9 14 雜湊函式 h key key x 3 mod 7 裝載因子 用來計算表長的 0.7處理衝突 線性探測再雜湊法 查詢成功的asl計算方法 因為現在的資料是7個,填充因子是...

雜湊表查詢 的 平均長度

將關鍵字序列 7 8 30 11 18 9 14 雜湊儲存到雜湊表中。雜湊表的儲存空間是乙個下標從0開始的一維陣列。雜湊函式為 h key key 3 mod 7,處理衝突採用線性探測再雜湊法,要求裝填 載 因子為0.7。1 請畫出所構造的雜湊表 2 分別計算等概率情況下查詢成功和查詢不成功的平均查...

平均查詢長度詳解

分塊查詢是折半查詢和順序查詢的一種改進方法,折半查詢雖然具有很好的效能,但其前提條件時線性表順序儲存而且按照關鍵碼排序,這一前提條件在結點樹很大且表元素動態變化時是難以滿足的。而順序查詢可以解決表元素動態變化的要求,但查詢效率很低。如果既要保持對線性表的查詢具有較快的速度,又要能夠滿足表元素動態變化...