




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 查找查找也叫檢索,是根據(jù)給定的某個(gè)值,在表中確定一個(gè)關(guān)鍵字等于給定值的記錄或數(shù)據(jù)元素關(guān)鍵字是數(shù)據(jù)元素中某個(gè)數(shù)據(jù)項(xiàng)的值,它可以標(biāo)識(shí)一個(gè)數(shù)據(jù)元素查找方法評(píng)價(jià)查找速度占用存儲(chǔ)空間多少算法本身復(fù)雜程度平均查找長(zhǎng)度ASL(Average Search Length):為確定記錄在表中的位置,需和給定值進(jìn)行比較的關(guān)鍵字的個(gè)數(shù)的期望值叫查找算法的7.1 順序查找查找過程:從表的一端開始逐個(gè)進(jìn)行記錄的關(guān)鍵字和給定值的比較算法描述Ch7_1.ci例 0 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92找6464監(jiān)視哨iiii比較次數(shù)=5比較次
2、數(shù):查找第n個(gè)元素: 1查找第n-1個(gè)元素:2.查找第1個(gè)元素: n查找第i個(gè)元素: n+1-i查找失敗: n+1順序查找方法的ASL7.2 折半查找查找過程:每次將待查記錄所在區(qū)間縮小一半適用條件:采用順序存儲(chǔ)結(jié)構(gòu)的有序表算法實(shí)現(xiàn)設(shè)表長(zhǎng)為n,low、high和mid分別指向待查元素所在區(qū)間的上界、下界和中點(diǎn),k為給定值初始時(shí),令low=1,high=n,mid=(low+high)/2讓k與mid指向的記錄比較若k=rmid.key,查找成功若krmid.key,則low=mid+1重復(fù)上述操作,直至lowhigh時(shí),查找失敗算法描述lowhighmid例 1 2 3 4 5 6 7 8 9
3、 10 115 13 19 21 37 56 64 75 80 88 92找211 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhighmid1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhighmidCh7_2.c例 1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhighmid找701 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lo
4、whighmid1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhighmid1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhighmid1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92lowhigh1185210741936判定樹:1 2 3 4 5 6 7 8 9 10 115 13 19 21 37 56 64 75 80 88 92算法評(píng)價(jià)判定樹:描述查找過程的二叉樹叫有n個(gè)結(jié)點(diǎn)的判定樹的深度為
5、log2n+1折半查找法在查找過程中進(jìn)行的比較次數(shù)最多不超過其判定樹的深度折半查找的ASL7.3 分塊查找查找過程:將表分成幾塊,塊內(nèi)無序,塊間有序;先確定待查記錄所在塊,再在塊內(nèi)查找適用條件:分塊有序表算法實(shí)現(xiàn)用數(shù)組存放待查記錄,每個(gè)數(shù)據(jù)元素至少含有關(guān)鍵字域建立索引表,每個(gè)索引表結(jié)點(diǎn)含有最大關(guān)鍵字域和指向本塊第一個(gè)結(jié)點(diǎn)的指針?biāo)惴枋鯟h7_3.c1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1822 12 13 8 9 20 33 42 44 38 24 48 60 58 74 57 86 5322 48 861 7 13索引表查38分塊查找方法評(píng)價(jià)AS
6、L最大最小兩者之間表結(jié)構(gòu)有序表、無序表有序表分塊有序表存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu)線性鏈表順序存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu)線性鏈表查找方法比較順序查找折半查找分塊查找7.4 哈希查找基本思想:在記錄的存儲(chǔ)地址和它的關(guān)鍵字之間建立一個(gè)確定的對(duì)應(yīng)關(guān)系;這樣,不經(jīng)過比較,一次存取就能得到所查元素的查找方法定義哈希函數(shù)在記錄的關(guān)鍵字與記錄的存儲(chǔ)地址之間建立的一種對(duì)應(yīng)關(guān)系叫哈希函數(shù)是一種映象,是從關(guān)鍵字空間到存儲(chǔ)地址空間的一種映象哈希函數(shù)可寫成:addr(ai)=H(ki)ai是表中的一個(gè)元素addr(ai)是ai的存儲(chǔ)地址ki是ai的關(guān)鍵字關(guān)鍵字集合存儲(chǔ)地址集合hash哈希表應(yīng)用哈希函數(shù),由記錄的關(guān)鍵字確定記錄在表中
7、的地址,并將記錄放入此地址,這樣構(gòu)成的表叫哈希查找又叫散列查找,利用哈希函數(shù)進(jìn)行查找的過程叫例 30個(gè)地區(qū)的各民族人口統(tǒng)計(jì)表編號(hào) 地區(qū)別 總?cè)丝?漢族 回族.1 北京2 上海.以編號(hào)作關(guān)鍵字,構(gòu)造哈希函數(shù):H(key)=keyH(1)=1H(2)=2以地區(qū)別作關(guān)鍵字,取地區(qū)名稱第一個(gè)拼音字母的序號(hào)作哈希函數(shù):H(Beijing)=2 H(Shanghai)=19 H(Shenyang)=19從例子可見:哈希函數(shù)只是一種映象,所以哈希函數(shù)的設(shè)定很靈活,只要使任何關(guān)鍵字的哈希函數(shù)值都落在表長(zhǎng)允許的范圍之內(nèi)即可沖突:key1key2,但H(key1)=H(key2)的現(xiàn)象叫同義詞:具有相同函數(shù)值的兩
8、個(gè)關(guān)鍵字,叫該哈希函數(shù)的哈希函數(shù)通常是一種壓縮映象,所以沖突不可避免,只能盡量減少;同時(shí),沖突發(fā)生后,應(yīng)該有處理沖突的方法哈希函數(shù)的構(gòu)造方法直接定址法構(gòu)造:取關(guān)鍵字或關(guān)鍵字的某個(gè)線性函數(shù)作哈希地址,即H(key)=key 或 H(key)=akey+b特點(diǎn)直接定址法所得地址集合與關(guān)鍵字集合大小相等,不會(huì)發(fā)生沖突實(shí)際中能用這種哈希函數(shù)的情況很少數(shù)字分析法構(gòu)造:對(duì)關(guān)鍵字進(jìn)行分析,取關(guān)鍵字的若干位或其組合作哈希地址適于關(guān)鍵字位數(shù)比哈希地址位數(shù)大,且可能出現(xiàn)的關(guān)鍵字事先知道的情況例 有80個(gè)記錄,關(guān)鍵字為8位十進(jìn)制數(shù),哈希地址為2位十進(jìn)制數(shù)8 1 3 4 6 5 3 28 1 3 7 2 2 4 28
9、 1 3 8 7 4 2 28 1 3 0 1 3 6 78 1 3 2 2 8 1 7 8 1 3 3 8 9 6 78 1 3 6 8 5 3 78 1 4 1 9 3 5 5. 分析: 只取8 只取1 只取3、4 只取2、7、5 數(shù)字分布近乎隨機(jī)所以:取任意兩位或兩位 與另兩位的疊加作哈希地址平方取中法構(gòu)造:取關(guān)鍵字平方后中間幾位作哈希地址適于不知道全部關(guān)鍵字情況折疊法構(gòu)造:將關(guān)鍵字分割成位數(shù)相同的幾部分,然后取這幾部分的疊加和(舍去進(jìn)位)做哈希地址種類移位疊加:將分割后的幾部分低位對(duì)齊相加間界疊加:從一端沿分割界來回折送,然后對(duì)齊相加適于關(guān)鍵字位數(shù)很多,且每一位上數(shù)字分布大致均勻情況例
10、 關(guān)鍵字為 : ,哈希地址位數(shù)為45 8 6 44 2 2 00 41 0 0 8 8H(key)=0088移位疊加5 8 6 40 2 2 40 4 6 0 9 2H(key)=6092間界疊加除留余數(shù)法構(gòu)造:取關(guān)鍵字被某個(gè)不大于哈希表表長(zhǎng)m的數(shù)p除后所得余數(shù)作哈希地址,即H(key)=key MOD p,pm特點(diǎn)簡(jiǎn)單、常用,可與上述幾種方法結(jié)合使用p的選取很重要;p選的不好,容易產(chǎn)生同義詞隨機(jī)數(shù)法構(gòu)造:取關(guān)鍵字的隨機(jī)函數(shù)值作哈希地址,即H(key)=random(key)適于關(guān)鍵字長(zhǎng)度不等的情況選取哈希函數(shù),考慮以下因素:計(jì)算哈希函數(shù)所需時(shí)間關(guān)鍵字長(zhǎng)度哈希表長(zhǎng)度(哈希地址范圍)關(guān)鍵字分布情
11、況記錄的查找頻率處理沖突的方法開放定址法方法:當(dāng)沖突發(fā)生時(shí),形成一個(gè)探查序列;沿此序列逐個(gè)地址探查,直到找到一個(gè)空位置(開放的地址),將發(fā)生沖突的記錄放到該地址中,即Hi=(H(key)+di)MOD m,i=1,2,k(km-1)其中:H(key)哈希函數(shù) m哈希表表長(zhǎng) di增量序列分類線性探測(cè)再散列:di=1,2,3,m-1二次探測(cè)再散列:di=1,-1,2,-2,3,k(km/2)偽隨機(jī)探測(cè)再散列:di=偽隨機(jī)數(shù)序列例 表長(zhǎng)為11的哈希表中已填有關(guān)鍵字為17,60,29的記錄, H(key)=key MOD 11,現(xiàn)有第4個(gè)記錄,其關(guān)鍵字為38, 按三種處理沖突的方法,將它填入表中0 1
12、 2 3 4 5 6 7 8 9 1060 17 29(1) H(38)=38 MOD 11=5 沖突 H1=(5+1) MOD 11=6 沖突 H2=(5+2) MOD 11=7 沖突 H3=(5+3) MOD 11=8 不沖突 38(2) H(38)=38 MOD 11=5 沖突 H1=(5+1) MOD 11=6 沖突 H2=(5-1) MOD 11=4 不沖突38(3) H(38)=38 MOD 11=5 沖突 設(shè)偽隨機(jī)數(shù)序列為9,則: H1=(5+9) MOD 11=3 不沖突38再哈希法方法:構(gòu)造若干個(gè)哈希函數(shù),當(dāng)發(fā)生沖突時(shí),計(jì)算下一個(gè)哈希地址,即:Hi=Rhi(key) i=1,
13、2,k其中:Rhi不同的哈希函數(shù)特點(diǎn):計(jì)算時(shí)間增加鏈地址法方法:將所有關(guān)鍵字為同義詞的記錄存儲(chǔ)在一個(gè)單鏈表中,并用一維數(shù)組存放頭指針例 已知一組關(guān)鍵字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函數(shù)為:H(key)=key MOD 13, 用鏈地址法處理沖突0 1 2 3 4 5 6 7 8 9 10 11 12 14127796855198420231011哈希查找過程及分析哈希查找過程給定k值計(jì)算H(k)此地址為空關(guān)鍵字=k查找失敗查找成功按處理沖突方法計(jì)算HiYNYN哈希查找分析哈希查找過程仍是一個(gè)給定值與關(guān)鍵字進(jìn)行比較的過程評(píng)價(jià)哈希查找效率仍要用ASL
14、哈希查找過程與給定值進(jìn)行比較的關(guān)鍵字的個(gè)數(shù)取決于:哈希函數(shù)處理沖突的方法哈希表的填滿因子=表中填入的記錄數(shù)/哈希表長(zhǎng)度例 已知一組關(guān)鍵字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函數(shù)為:H(key)=key MOD 13, 哈希表長(zhǎng)為m=16, 設(shè)每個(gè)記錄的查找概率相等(1) 用線性探測(cè)再散列處理沖突,即Hi=(H(key)+di) MOD mH(55)=3 沖突,H1=(3+1)MOD16=4 沖突,H2=(3+2)MOD16=5H(79)=1 沖突,H1=(1+1)MOD16=2 沖突,H2=(1+2)MOD16=3 沖突,H3=(1+3)MOD16=4
15、 沖突,H4=(1+4)MOD16=5 沖突,H5=(1+5)MOD16=6 沖突,H6=(1+6)MOD16=7 沖突,H7=(1+7)MOD16=8 沖突,H8=(1+8)MOD16=90 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15ASL=(1*6+2+3*3+4+9)/12=2.514 168275519208479231110H(19)=6H(14)=1H(23)=10H(1)=1 沖突,H1=(1+1) MOD16=2H(68)=3H(20)=7H(84)=6 沖突,H1=(6+1)MOD16=7 沖突,H2=(6+2)MOD16=8H(27)=1 沖突,H1=(1+1)MOD16=2 沖突,H2=(1+2)MOD16=3 沖突,H3=(1+3)MOD16=4H(11)=11H(10)=10 沖突,H1=(10+1)MOD16=11 沖突,H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校樓層長(zhǎng)管理制度
- 學(xué)校防恐怖管理制度
- 學(xué)生封閉化管理制度
- 學(xué)院服裝間管理制度
- 安全生產(chǎn)個(gè)管理制度
- 安委會(huì)工作管理制度
- 安裝部進(jìn)度管理制度
- 完善請(qǐng)休假管理制度
- 實(shí)木床倉(cāng)庫(kù)管理制度
- 客戶滿意度管理制度
- 《企業(yè)信息安全培訓(xùn)課件》
- 職業(yè)學(xué)院學(xué)生轉(zhuǎn)專業(yè)申請(qǐng)表
- 2025年全國(guó)安全生產(chǎn)月安全知識(shí)競(jìng)賽題庫(kù)及答案(共280題)
- 一例前交通動(dòng)脈瘤破裂伴蛛網(wǎng)膜下腔出血的護(hù)理查房
- 心衰病人的護(hù)理查房
- 乳腺癌患者靜脈管理
- 制造企業(yè)生產(chǎn)記錄檔案管理制度
- 急診科臨床診療指南-技術(shù)操作規(guī)范更新版
- 《接觸網(wǎng)施工》課件 4.8.1 交叉線岔安裝
- 藝術(shù)培訓(xùn)學(xué)校檔案管理制度(3篇)
- 住院時(shí)間超過30天的患者管理與評(píng)價(jià)登記本
評(píng)論
0/150
提交評(píng)論