在牛客網上刷到的乙個關於雜湊表的題目,因為當時做的時候看和我之前做的題目一樣,沒有思考直接做選了結果,最後對答案的時候卻發現答案錯了。仔細看了一下,發現題目與之前做的題目基本大致相當,卻是不一樣的知識點,在我之前做此題之前我還從未注意過,是乙個新的知識點。
(單選題)
設雜湊表長為14,雜湊函式為h(key)=key%11。表中現有資料15、38、61和84,其餘位置為空,
如果用二次探測再雜湊處理衝突,則49的位置是()
a.8 b.3
c.5 d.9
答案:d
分析:
二次探測再雜湊:di=1^2, -1^2, 2^2, -22,…,k2, -k^2 ( k<=m/2 )經計算得:開放定址法:hi=(h(key)+di)mod m,其中h(key)為雜湊函式;m為雜湊表長;di為增量序列
h(15)=4,h(38)=5
h(61)=6,h(84)=7
h(49) = 49%11 = 5與h(38)衝突,根據:hi=(h(key)+di)mod m,以及二次探測雜湊求得:
di = 1, h1(h(49)+1) mod 14 = 6 ;因h(61)=6,所以衝突
di = -1, h2(h(49)-1) mod 14 = 4 ;因h(15)=4,所以衝突
di = 4, h3(h(49)+4) mod 14 = 9;不衝突
(單選題)
設雜湊表長為14,雜湊函式為h(key)=key%11。表中僅有h(15)=4,h(38)=5,h(61)=6,h(84)=7四個結點,其餘位置為空,
如果用線性探測法處理衝突,則49的結點位址是()
a.8 b.3
c.5 d.9
答案:a
分析:
di=1,2,3,…m-1,稱為線性探測再雜湊;過程:開放定址法:hi=(h(key)+di)mod m,其中h(key)為雜湊函式;m為雜湊表長;di為增量序列
h(49) = 49%11 = 5,發生衝突;
h1(h(49)+1) mod 14 = 6,衝突;
h2(h(49)+2) mod 14 = 7,衝突;
h2(h(49)+3) mod 14 = 8,不衝突;
雜湊表(雜湊表)的定義
chapter 雜湊表 雜湊表 1.雜湊表 雜湊表 的定義 2.雜湊表是怎麼進行查詢的?3.雜湊函式設計 直接定址法 4.雜湊函式設計 除留餘數法 5.雜湊衝突處理 開放定址法 6.雜湊衝突處理 鏈位址法 7.雜湊表的鏈位址法實現 8.linux核心中的hash與bucket 9.引入雜湊桶的概念來...
雜湊表(雜湊表)的實現
雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...
雜湊表(雜湊表)的定義
到了有序表 已排序的表 查詢時,我們可以利用a i 與key的 或 來折半查詢,直到相等時查詢成功返回i。反正我們的目標就是要找到那個 i 值,是不是還有其它好點的方法呢?乙個小故事 試想這樣的場景,你很想學太極拳,聽說學校有個叫張三丰的人打得特別好,於是你到學校學生處找人。學生處的工作人員可能會拿...