




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
9.19.29.3
l} Page檢索的效率
l} Page基本概念(續
l} Page基本概念(續
l} Page平均檢索長度
l} Page nAS =ni=
PiC
l} Page假設線性表為(a,b,c)檢索a、0.4×1+0.1×2+0.5×3=
l} Page
l} Page9.1.19.1.29.1.3
l} Page
l} Page//代碼9-1順序檢索的結構類型定temte<classType>classItem{Item(Typevalue):key(value){}TypegetKey(){returnkey;}voidsetKey(Typek){key=k;}Type string vector<Item<Type>*>
l} Page te<classType>intTypek){int }
l} Page假設檢索每個關鍵碼是等概率的,Pin-Pi·(n-i)i=
1n-(n-i)ni=0 n+1=i=
i=
l} PageASL=p n+1+q (n+1)=p n+1+(1-p)(n+1)=(n+1)(1-p/2(n+1)/2<ASL<
l} Page
l} Page9.1.2可根據三種比較結果區分出三種情況(以遞增為例
l} Page//代碼9-3 te<classType>intBinSearch(vector<Item<Type>*>&dataList,intlength,Typek) intlow=1,high=length,mid;while(low<=high){high=mid-1; elseif(k>dataList[mid]->getKey())low } }
l} Page檢索關鍵碼18。low=1;high=9;第K=18一次:mid=5;array[5]=35>18high=4;第二次:mid=2array[2]=17<18low=3;(high=4)第三次:mid=3array[3]=18=18mid=3;return8
l} Page n
n或log n
l} PagejjASL
1 i=
2i-1=n+1lo (n+1)-
?log2(n+1)-
(n>
l} Page
l} Page“按塊有序
l} Page
l} Page
l} Page
l} Page先在索引表中確定待查元素所在ASL(n)=ASLb+
l} Page索引表是按塊內最大關鍵碼有的,且長度也不大,可以二分檢各子表內各個記錄不是按記錄關鍵
l} PageASL
=b+2
ASL
=s+2ASL=b+1+s+1=b+s+ =n+s=ASL
n時,ASLn+1≈l} Page
l} PageASL=ASLb+?log2(b+1)-1+?log2(1+n/s)+
l} Page
l} Page9.2檢索是
l} Page
l} Page
l} PageS={and,begin,do,end,for,go,if,repeat,then,until,while}char在字母表{a,b,c,...,z}中的序號,即:H(key)=key[0]–
l} Page
l} Page例9.2:在集合S中增加4個關鍵碼,集合S1+{else,array,with,intcharkey[];inti;{i=while((i<8)&&(key[i]!=‘\0’))return((key[0]+key(i-1)–2*’a’)/2}
l} Page
l} Page散列表的空間大小為填入表中的結點數為
l} Page
l} PageAddress=Hash(key)
l} Page
l} Page…
l} Page
l} Pageh(x)=xmod
l} Page
l} Page那么,h(x)=xmod2k僅僅是x(用二進制那么,h(x)=xmod10k僅僅是x(用十進
l} Page
l} Pagekey乘上一個常數A(0<A<hash(key)=n*(A*key%1)“A*key1”A*keyA*key%1=A*key-A*key
l} Pagekey123456n且取A= 5-1)/2= = *123456%1)=10000* …%1)=10000* …=
l} Page若地址空間為p位,就取A*key%1=A*key-A*key值Knuth認為:A可以取任何值,與待排序的數據特征有關。一般情況下取黃金分割(5-2最理想
l} Page一組二進制關鍵碼:(,,,平方結果為:(,,,
l} Page
l} Pagerlkr
( αα
i
表示第i個符號在第k位上出n/rn個數中均勻出現的lkk位)
l} Page992148l1=991269l2=990527l3=991630l4=991805l5=991558l6=992047990001①②③④⑤3
l} Pagel1=(8-8/10)2×1+(0-8/10)2l2=(8-8/10)2×1+(0-8/10)2l3=(2-8/10)2×2+(4-8/10)2×1+(0-8/10)2l4=l5=l6=(2-8/10)2×2+(1-8/10)2×4+8/10)2×4
l} Page
l} Page
l} Page進制數(210485)13,再把它轉換為十進(210485)13=2×135+1×134+4×132+8×13+=
l} Page
l} Page—把各部分的最后一—各部分不折斷,沿
l} Page[例9.6如果一本書的編號為0-442-20586-586586422022 0+0[1]008 609
l} PageintELFhash(char*key){unsignedlongh=0;while(*key){h=(h<<4)+unsignedlongg=h&0xF if(g)h^=g>>24;h&=}returnh%}
l} Page
l} Page在實際應用中應根據關鍵碼的特點,選有人曾用“賭”的統計分析方法對它們進行了模擬分析,結論是平方取中法若關鍵碼不是整數而是字符串時,可以把每個字符串轉換成整數,再應用
l} Page開散列方法openhashing拉鏈法,separatechaining閉散列方法closedhashing開地址方法,openaddressing
l} Page例:{、 、、 h(Key)=Key%
l} Page
l} Page
l} Page時引起多次磁盤,從而增加了檢
l} Page基本思想
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Page
l} Paged0,d1,d2,...di,...dm-
l} Page
l} Page
l} Page
l} Page p(K,i)=
l} Page列表長度M=15,用線性探查法解決構造n=11,M=h(key)=
l} Page26:h(26)=0,36:h(36)=41:h(41)=2,38:h(38)=44:h(44)= 可分別放在和
l} PageM=h(key)=
l} Page
l} Pageic)mod探查函數是p(K,i
l} Page
l} Paged2i-1=(d+i2)%d2i=(d–i2)%p(K,2i)=-
l} Page例:使用一個大小M13k1的探查序列是3、4、2、7、k2的探查序列是2、3、1、6、
l} Pagep(K,i)=perm[i-這里perm是一個長度為M1的數包含值從1到M1
l} Pagevoidpermute(int*array,intn){for(inti=1;i<=n;i++)}
l} Page例:考慮一個大小為M13的表,perm[02,perm[1]=3,perm[2]=7。k1的探查序列是4、6、7、11、k2的探查序列是2、4、5、9、
l} Page
l} Page
l} Page(d+h2(key))%M,(d+2h2(key))%M,(d+3h2(key))%M
l} Pagedi=(d+ih2(key))%p(K,i)=i*h2
l} Pageh2key)必須與M雙散列的優點:不易產生“
l} Page在1≤h2(K)≤M1范圍之間h2(K)=Kmod(M-2)+或者h2(K)=[K/M]mod(M-2)+p,(p是小于M的最大素數)h2(KKmodq1q是小于p的最大
l} Page數h,計算出散列地址h(K)直到某個地址空間未被占用(可以插入
l} Page//代碼9-6 <classKey,classElem,class dict<Key,Elem, lem&e){intintpos if pos=(home+p(getkey(e),i))%}HT[pos]=e; returntrue;}
l} Page
l} Pageh,計算出散列地址h
l} PageM=h(key)=
l} Page//檢索關鍵碼值為k的記錄。假定每個關鍵碼的探查序列中 <classKey,classElem,class boolhashdict<Key,Elem, hashSearch(constKey&K,Elem&e)const{inthome= int intposhome; if p::eq(KHT[pose=pos=(home+p(K,i))%}
l} Page
l} PageM=h(key)=
l} Page
l} Page
l} Page鍵碼k1和k2,h(k12,h(k26。的二次探查序列是、、、 的二次探查序列是、、 、、1、9、3、
l} Page被刪除標記值稱為(tombstone
l} Page
l} Page
l} Page te<classKey,classElem,class stKey&{inthome=h(K);inti=0;
intpos while if( temp=HT[pos];HT[pos]=TOMB;//設置returntemp; pos=(home+p(K,i))%}}
l} Page <classKey,classElem,class hdict<Key,Elem, m&e){inthome=h(getkey(e));home記錄基位置inti=0;intpos while if( p::eq(getkey(e),HT[pos]))returnfalse; pos=(home+p(getkey(e),i))%} returntrue;}
l} PageTOMB即“HT[pos]==TOMB”時就跳 入到第一個TOMB處(如果有的話),否
l} Page p, boolhashdict<Key,Elem, Elem&e){inthome=h(getkey(e)); inti=0,insce;boolintpos if( if( p::eq(TOMB,HT[pos])&& !tomb_pos){ pos=(home+p(getkey(e),i))%} returntrue;}
l} Page
l} Page
l} Pageα=N/M有關
l} Page
l} Page址被占用的可能性是用的可能性是NN1)M(M-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《涉外公證講座》課件
- 四川民族學院《文學風格論》2023-2024學年第二學期期末試卷
- 江蘇海洋大學《景觀建筑與外部環境設計》2023-2024學年第二學期期末試卷
- 內蒙古烏蘭察布集寧二中2024-2025學年高三下學期高考考前質量檢測試題三(5月模擬)數學試題含解析
- 江蘇省灌云縣高中名校2025年高三延長假期綜合考試英語試題含解析
- 遼寧省丹東市重點中學2024-2025學年高三2月份自測歷史試題含解析
- 昔陽縣2025年小升初總復習數學測試題含解析
- 江西省鄱陽縣第二中學2025年初三五月份適應性考試物理試題(文史類)試題含解析
- 新疆鐵道職業技術學院《綜合英語III》2023-2024學年第二學期期末試卷
- 江蘇省南京師范大學連云港華杰實驗學校2024-2025學年高三高考考前最后一卷英語試題含解析
- 2024年全國“紀檢監察”業務相關知識考試題庫(附含答案)
- 《中華人民共和國社區矯正法》知識競賽試題與答案
- 湖南長沙長郡中學2025屆高考英語二模試卷含解析
- 科技改變生活英文課件
- DB22JT 143-2015 住宅工程質量常見問題防控技術規程
- DB41T 1709-2018 額定電壓300-500V風電傳感器用耐扭曲軟電纜
- 第3節 人類的起源與進化課件
- 更換窗戶施工方案
- 建筑施工項目職業病危害防治方案
- 【卷揚機傳動系統設計(論文)8400字】
- 幼兒園大班安全《湯灑了怎么辦》課件
評論
0/150
提交評論