現有資料序列和雜湊函式h(x)=x mode 10。
(1)請畫出用分離鏈結法表示的雜湊表(5分)
(2)請畫出用平方探測法f(i)=i*i表示的雜湊表(5分)
(3)請計算前兩題中雜湊表的裝載因子和查詢成功的平均查詢長度asl(5分)
(1)
分離鏈結法01
437123
1323
6173
4434456
7894199
9679
1989
將現有的資料序列依次代入到雜湊函式h(x)=x mode 10中,得到相應的結果
(2)平方探測法
empty table
after 4371
after 1323
after 6173
after 4199
after 4344
after9679
after1989
09679
9679
14371
4371
4371
4371
4371
4371
437123
1323
1323
1323
1323
1323
1323
46173
6173
6173
6173
6173
54344
4344
434467
81989
94199
4199
4199
4199
首先,對第一位的4371代入到雜湊函式中進行計算,得到結果為1,放入到1位置中
第二位1323,得到結果為3,放到3位置中
第三位6173,得到結果為3,與1323發生了衝突,那麼i=0不符合,將i=1代入,i*i=1,得到結果為4,放到4位置中
第四位4199,得到結果為9,放到9位置中
第五位4344,得到結果為4,與6173發生了衝突,那麼i=0不符合,將i=1代入,i*1=1,得到結果為5,放到5位置中
第六位9679,得到結果為9,與4199發生了衝突,那麼i=0不符合,將i
=1代入,i*i=1,得到結果為0,放到0位置中
第七位1989,得到結果為9,與4199發生了衝突,那麼i=0不符合,將i=1代入,i*i=1,得到結果為0,與9679發生了衝突,說明i=0不符合,將i=2代入,i*i=4,得到結果為3,與1323發生了衝突,說明i=2不符合,將i=3代入,i*i=9,得到結果為8,放到8位置中
(3)asl
裝載因子很顯然是0.7,7/10=0.7
首先,我們來看分離鏈結法中的asl應該怎麼計算,查詢成功的asl說明就是要能夠找到的次數,那麼很顯然,在分離鏈結法中有4個資料只需要查詢一次,分別是4371、1323、4344、4199,有2個資料要查詢兩次,分別是6173、9679,還有1個資料需要查詢三次,是1989
得到查詢成功的asl=(4*1+2*2+1*3)/7=11/7
其次,是平方探測法中的asl
由平方探測法可得,4371、1323、4199只需要查詢一次,6173、4344、9679需要查詢兩次,1989需要查詢3次
最後得到查詢成功的asl=(1*3+2*3+3*1)/7=12/7
資料結構與演算法之雜湊 分離鏈結法 《七》
hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入 又叫做預對映,pre image 通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來唯一的確定輸入...
雜湊表資料結構之一 分離鏈結法
查詢樹adt允許對一組元素進行各種操作,而今次總結的雜湊表 hash table adt,不過它只支援二叉查詢樹所允許的一部分操作,雜湊表的實現常常叫做雜湊 hashing 以常數平均時間執行插入 刪除和查詢的技術。理想的雜湊表資料結構只不過是乙個包含有關鍵字的具有固定大小的陣列,把錶的大小叫做ta...
資料結構 雜湊表的線性探測演算法
構造雜湊表常用的方法是 除留餘數法 取關鍵值被某個不大於雜湊表長m的數p除后的所得的餘數為雜湊位址。hashkey key p。直接定址法 取關鍵字的某個線性函式為雜湊位址hashkey key 或 hashkey a key ba b為常數。我在這裡主要使用一下除留餘數法hash key key ...