




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 一、一、哈希表是什么?哈希表是什么?二、哈希函數(shù)的構(gòu)造方法哈希函數(shù)的構(gòu)造方法 三、處理沖突的方法處理沖突的方法 四、哈希表的查找哈希表的查找9.3 哈哈 希希 表表 以上兩節(jié)討論的表示查找表的各種結(jié)構(gòu)結(jié)構(gòu)的共同特點(diǎn)特點(diǎn):記錄在表中的位置位置和它的關(guān)關(guān)鍵字鍵字之間不存在不存在一個(gè)確定的關(guān)系,一、哈希表是什么?哈希表是什么? 查找的過程查找的過程為給定值給定值依次和關(guān)鍵字集合中各個(gè)關(guān)鍵字關(guān)鍵字進(jìn)行比較比較, 查找的效率查找的效率取決于和給定值進(jìn)行比較進(jìn)行比較的關(guān)鍵字個(gè)數(shù)個(gè)數(shù)。 只有一個(gè)辦法:預(yù)先知道所查關(guān)鍵字在表中的位置, 對于頻繁使用的查找表,希望 ASL = 0。 即要求:記錄在表中位置和其
2、關(guān)鍵字之間存在一種確定的關(guān)系。若以下標(biāo)為以下標(biāo)為000 999 的順序表的順序表表示之。例如:為每年招收的 1000 名新生建立一張查找表,其關(guān)鍵字為學(xué)號,其值的范圍為 xx000 xx999 (前兩位為年份)。則查找過程可以簡單進(jìn)行:取給定值(學(xué)號)的后三位,不需要經(jīng)過比較不需要經(jīng)過比較便可直接從順序表中找到待查關(guān)鍵字。因此在一般情況下,需在關(guān)鍵字與記錄在表中的存儲位置之間建立一個(gè)函數(shù)關(guān)系,以 f(key) 作為關(guān)鍵字為 key 的記錄在表中的位置,通常稱這個(gè)函數(shù) f(key) 為哈希函數(shù)。Zhao, Qian, Sun, Li, Wu, Chen, Han, Ye, Dei 例如:對于如下
3、 9 個(gè)關(guān)鍵字設(shè)設(shè) 哈希函數(shù)哈希函數(shù) f(key) = (Ord(第一個(gè)字母第一個(gè)字母) -Ord(A)+1)/2 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3ChenZhaoQianSunLiWuHanYeDei問題問題: 若添加關(guān)鍵字 Zhou , 怎么辦?怎么辦?能否找到能否找到另一個(gè)哈希函數(shù)?1) 哈希函數(shù)是一個(gè)映象映象,即: 將關(guān)鍵字的集合映射到某個(gè)地址集合上,將關(guān)鍵字的集合映射到某個(gè)地址集合上, 它的設(shè)置很靈活靈活,只要這個(gè)地址集地址集合的 大小不超出允許范圍不超出允許范圍即可;從這個(gè)例子可見:從這個(gè)例子可見:2) 由于哈希函數(shù)是一個(gè)壓縮映象壓縮映象,因此
4、,在一般情況下,很容易產(chǎn)生“沖突沖突”現(xiàn)象,即: key1 key2,而 f(key1) = f(key2)。3) 很難很難找到一個(gè)不產(chǎn)生沖突的哈希函數(shù)。一般情況下,只能選擇恰當(dāng)?shù)墓:瘮?shù),使沖突盡可能少地產(chǎn)生。 因此,在構(gòu)造這種特殊的“查找表” 時(shí),除了需要選擇一個(gè)“好”(盡可能少產(chǎn)生沖突)的哈希函數(shù)之外;還需要找到一種“處理沖突” 的方法。哈希表的定義: 根據(jù)設(shè)定的哈希函數(shù)哈希函數(shù) H(key) 和所選中的處處理沖突的方法理沖突的方法,將一組關(guān)鍵字映象到映象到一個(gè)有限的、地址連續(xù)的地址集 (區(qū)間) 上,并以關(guān)鍵字在地址集中的“象”作為相應(yīng)記錄在表中的存儲位置存儲位置,如此構(gòu)造所得的查找表稱
5、之為“哈希表哈希表”或“散列表散列表”。這一映象過程稱為“哈希造表哈希造表”或“散列散列”。所得存儲地址稱為“哈希地址哈希地址”或“散列地址散列地址”。二、構(gòu)造哈希函數(shù)的方法構(gòu)造哈希函數(shù)的方法 對數(shù)字?jǐn)?shù)字的關(guān)鍵字可有下列構(gòu)造方法: 若是非數(shù)字關(guān)鍵字非數(shù)字關(guān)鍵字,則需先需先對其進(jìn)行進(jìn)行數(shù)字化處理數(shù)字化處理。1. 直接定址法直接定址法3. 平方取中法平方取中法5. 除留余數(shù)法除留余數(shù)法4. 折疊法折疊法6. 隨機(jī)數(shù)法隨機(jī)數(shù)法2. 數(shù)字分析法數(shù)字分析法哈希函數(shù)為關(guān)鍵字的線性函數(shù) H(key) = key 或者 H(key) = a key + b1. 直接定址法直接定址法此法僅適合于:此法僅適合于:
6、地址集合的大小地址集合的大小 = = 關(guān)鍵字集合的大小關(guān)鍵字集合的大小2. 除留余數(shù)法除留余數(shù)法 設(shè)定哈希函數(shù)為設(shè)定哈希函數(shù)為: H(key) = key MOD p 其中其中, pm ( (表長表長) ) 并且并且 p 應(yīng)為不大于應(yīng)為不大于 m 的素?cái)?shù)的素?cái)?shù) 或是或是 不含不含 20 以下的質(zhì)因子以下的質(zhì)因子 給定一組關(guān)鍵字為:12, 39, 18, 24, 33, 21,若取 p=9, 則他們對應(yīng)的哈希函數(shù)值將為: 3, 3, 0, 6, 6, 3例如:例如:為什么要對 p 加限制? 可見,若 p 中含質(zhì)因子 3, 則所有含質(zhì)則所有含質(zhì)因子因子 3 的關(guān)鍵字均映射到的關(guān)鍵字均映射到“3 的
7、倍數(shù)的倍數(shù)”的的地址上地址上,從而增加了“沖突”的可能。 實(shí)際造表時(shí),采用何種采用何種構(gòu)造哈希函數(shù)的方法方法取決于建表的關(guān)鍵字集合的情況(包括關(guān)鍵字的范圍和形態(tài)),總的原則是使產(chǎn)生沖突的可能性降到的原則是使產(chǎn)生沖突的可能性降到盡可能地小盡可能地小。三、處理沖突的方法處理沖突的方法 “處理沖突處理沖突” 的實(shí)際含義是:為產(chǎn)生沖突的地址尋找下一個(gè)尋找下一個(gè)哈希地址。1. 開放定址法開放定址法2. 再哈希法再哈希法3. 鏈地址法(不講)鏈地址法(不講) 為產(chǎn)生沖突的地址 H(key) 求得一個(gè)地址序列地址序列: H0, H1, H2, , , Hs 1 sm-1其中:H0 = H(key) Hi =
8、 ( H(key) + di ) MOD m i=1, 2, , s1. 開放定址法開放定址法對增量 di 有三種取法:o1) 線性探測再散列線性探測再散列 di = c i 最簡單的情況 c=1o2) 平方探測再散列平方探測再散列 di = 12, -12, 22, -22, , ,o3) 隨機(jī)探測再散列隨機(jī)探測再散列 di 是一組偽隨機(jī)數(shù)列偽隨機(jī)數(shù)列 注意:注意:增量增量 di 應(yīng)具有應(yīng)具有“完備性完備性”例如例如: 關(guān)鍵字集合 19, 01, 23, 14, 55, 68, 11, 82, 36 設(shè)定設(shè)定哈希函數(shù) H(key) = key MOD 11 ( 表長=11 ) 0 1 2 3
9、 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10190123 145568190123 1468若采用線性探測再散列線性探測再散列處理沖突若采用二次探測再散列二次探測再散列處理沖突11 8236551182361 1 2 1 3 6 2 5 11 1 2 1 2 1 4 1 3兩種方法的平均查找長度:o 線性探測再散列:n ASL(9)=1/9(14+22+3+5+6)=22/9o 二次探測再散列:n ASL(9)=1/9(15+22+3+4)=16/9o1) 選用的哈希函數(shù)哈希函數(shù);o2) 選用的處理沖突的方法處理沖突的方法;o3) 哈希表飽和的程度,裝載因子裝載
10、因子 =n/m 值的大小大?。╪記錄數(shù),記錄數(shù),m表的長度)表的長度)決定哈希表查找的決定哈希表查找的ASL的因素的因素:哈希表查找的分析: 從查找過程得知,哈希表查找的平均查找長度實(shí)際上并不等于零實(shí)際上并不等于零。哈希表的平均查找長度 利用裝填因子所計(jì)算的平均查找長度是近似值!o 線性探測再散列哈希表:o 二次探測再散列、隨即探測再散列哈希表: 11121nlS1ln1nrS2. 再哈希法再哈希法oHi=RHi(key) i=1,2,.k RHi是不同的哈希函數(shù),當(dāng)產(chǎn)生地址是不同的哈希函數(shù),當(dāng)產(chǎn)生地址沖突時(shí)計(jì)算另一個(gè)哈希函數(shù)地址,直沖突時(shí)計(jì)算另一個(gè)哈希函數(shù)地址,直到?jīng)_突不再發(fā)生。到?jīng)_突不再發(fā)
11、生。這種方法不易產(chǎn)生這種方法不易產(chǎn)生“聚集聚集”,但增加了,但增加了計(jì)算時(shí)間。計(jì)算時(shí)間。課堂習(xí)題o 設(shè)有一個(gè)按各元素的值排好序的線性表且長度大于2,對給定的值K,分別用順序查找法和折半查找法查找一個(gè)與K相等的元素,比較次數(shù)分別是s和b;在查找不成功的情況下,正確的s和b的數(shù)量關(guān)系是( )。A. 總有s=bB. 總有sbC. 總有sbD. 與K值大小有關(guān)答案:Bo 對有18個(gè)元素的有序表A作二分(折半)查找,則查找A3的比較序列的下標(biāo)為()A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,3答案:Do設(shè)散列表長m=14,散列函數(shù)為h(k)=k%11,表中已有4個(gè)記錄,如果用二次探測再散列來處理沖突,則關(guān)鍵字為49的記錄其存儲地址是()。A. 8B. 3C. 5D. 9 0 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 315 386184答案:Do
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題一 帶電粒子在組合場中的運(yùn)動(dòng) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高二下學(xué)期物理人教版(2019)選擇性必修第二冊
- 2025年甘肅工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫一套
- 2024年安慶望江縣融資擔(dān)保有限公司招聘5人筆試參考題庫附帶答案詳解
- 2024年合肥產(chǎn)投康養(yǎng)集團(tuán)有限公司子公司社會招聘2人筆試參考題庫附帶答案詳解
- 2025年農(nóng)用搬運(yùn)機(jī)械項(xiàng)目建議書
- 2024年井岡山風(fēng)景旅游集團(tuán)有限公司面向社會公開招聘工作人員擬入闈筆試參考題庫附帶答案詳解
- 2025年桂林師范高等專科學(xué)校單招職業(yè)適應(yīng)性測試題庫完美版
- 認(rèn)識人民幣(教學(xué)設(shè)計(jì))-2024-2025學(xué)年一年級下冊數(shù)學(xué)人教版
- 第二單元課題3制取氧氣教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級化學(xué)人教版(2024)上冊
- 第五章 一元一次方程小結(jié)(第 1 課時(shí))教學(xué)設(shè)計(jì)2024-2025學(xué)年人教版數(shù)學(xué)七年級上冊
- 2024年福建福州地鐵集團(tuán)招聘筆試參考題庫含答案解析
- 危重病人安全轉(zhuǎn)運(yùn)應(yīng)急預(yù)案完整流程版
- 綠色施工環(huán)境保護(hù)應(yīng)急預(yù)案
- 《甲狀旁腺疾病》課件
- 魯教版九年級化學(xué)上冊課件【全冊】
- 《城市軌道交通應(yīng)急處理》課件 《城市軌道交通應(yīng)急處理》項(xiàng)目二
- 特種行業(yè)許可證變更申請表
- 基礎(chǔ)日語1學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 政務(wù)信息工作先進(jìn)單位事跡材料
- 道路建筑材料電子教案(全)
- 《一頁紙項(xiàng)目管理》中文模板
評論
0/150
提交評論