版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第九章查找9.1靜態(tài)查找表
9.2動態(tài)查找表
9.3哈希表(散列表和查找)
第9章查找1、查找表——也叫檢索,是由同一類型的數(shù)據(jù)元素(或記錄)構(gòu)成的集合。由于“集合”中的數(shù)據(jù)元素之間存在完全松散的關(guān)系,因此查找表是一種非常靈便的數(shù)據(jù)結(jié)構(gòu)。2、查找表的操作查找某個“特定”的數(shù)據(jù)元素是否在查找表中;檢索某個“特定”的數(shù)據(jù)元素的各種屬性;在查找表中插入一個數(shù)據(jù)元素;從查找表中刪除某個數(shù)據(jù)元素。3、靜態(tài)查找表、動態(tài)查找表若對查找表只作前兩種統(tǒng)稱為“查找”的操作,則此類查找為靜態(tài)查找表。若在查找過程中同時插入查找表中不存在的數(shù)據(jù)元素,或從查找表中刪除已存在的某個數(shù)據(jù)元素,則稱此類表為動態(tài)查找表。4、關(guān)鍵字、次關(guān)鍵字關(guān)鍵字:是數(shù)據(jù)元素(或記錄)中某個數(shù)據(jù)項的值,用它可以標識(識別)一個數(shù)據(jù)元素(或記錄)。若此關(guān)鍵字可以唯一地標識一個記錄,則稱此關(guān)鍵字為主關(guān)鍵字。反之,則稱此關(guān)鍵字為次關(guān)鍵字。第9章查找5、查找根據(jù)給定的某個值,在查找表中確定一個其關(guān)鍵字等于給定值的記錄或數(shù)據(jù)元素。若表中存在這樣的一個記錄,則稱查找是成功的,此時查找的結(jié)果為給出整個記錄的信息,或指示該記錄在查找表中的位置;6、查找方法評價查找速度、占用存儲空間多少、算法本身復(fù)雜程度平均查找長度ASL(AverageSearchLength):為確定記錄在表中的位置,需和給定值進行比較的關(guān)鍵字的個數(shù)的期望值叫查找算法的平均查找長度。若表中不存在關(guān)鍵字等于給定值的記錄,則稱查找不成功。此時查找的結(jié)果可給出一個“空”記錄或“空”指針。第9章查找i例01234567891011513192137566475808892找6464監(jiān)視哨iiii比較次數(shù)=5比較次數(shù):查找第n個元素:1查找第n-1個元素:29.1靜態(tài)查找表一、順序表的查找(順序查找)1、順序查找從表中最后一個記錄開始,逐個進行記錄的關(guān)鍵字和給定值的比較,若某個記錄的關(guān)鍵字和給定值比較相等,則查找成功,找到所查找記錄;反之,若直至第一個記錄,其關(guān)鍵字和給定值比較都不等,則表明表中沒有所查記錄,查找不成功。查找第1個元素:n查找第i個元素:n+1-i查找失?。簄+12、查找操作的性能分析對于含有n個記錄的表,查找成功時的平均查找長度為:其中:n為表長,Pi為查找表中第i個記錄的概率,且,Ci為找到該記錄時,曾和給定值比較過的關(guān)鍵字的個數(shù)。從順序查找的過程可見,Ci取決于所查找記錄在表中的位置。查找表中最后一個記錄是,僅需比較一次,而查找表中第一個記錄時,則需比較n次。一般情況下Ci等于n-i+1。ASL=nP1+(n-1)P2++2Pn-1+Pn從上式可知,在不等概率查找的情況下,ASLss在Pn≥Pn-1≥···≥P2≥P1時取極小值。應(yīng)對記錄的查找概率進行排序,使表中記錄按查找概率由小到大重新排列,以便提高查找效率。查找概率無法事先測定,則查找過程采取的改進辦法是,在每次查找之后,將剛剛查找到的記錄直接移至表尾的位置上。順序查找的缺點是平均查找長度較大,特別是當n很大時,查找效率低。然而,它有很大的優(yōu)點是:算法簡單且適應(yīng)面廣。當查找不成功時的情形不忽視時,查找算法的平均查找長度應(yīng)是查找成功時的平均查找長度與查找不成功時的平均查找長度之和。對于順序查找,不論給定值key為何值,查找不成功時和給定值進行比較的關(guān)鍵字個數(shù)均為n+1。假設(shè)查找成功與不成功的可能性相同,對每個記錄的查找概率也相等,則,此時順序查找的平均查找長度為:一、順序表的查找(順序查找)1、折半查找折半查找的查找過程是:先確定待查記錄所在的范圍(區(qū)間),然后逐步縮小范圍直到找到或找不到該記錄為止。每次將待查記錄所在區(qū)間縮小一半。二、有序表的查找(折半查找)算法實現(xiàn):假設(shè)表長為n,low、high和mid分別指向待查元素所在區(qū)間的上界、下界和中點,k為給定值,初始時,令low=1,high=n,mid=(low+high)/2讓k與mid指向的記錄比較若k==r[mid].key,查找成功若k<r[mid].key,則high=mid-1若k>r[mid].key,則low=mid+1重復(fù)上述操作,直至low>high時,查找失敗。lowhighmid例1234567891011513192137566475808892找211234567891011513192137566475808892lowhighmid1234567891011513192137566475808892lowhighmid例如:已知如下11個數(shù)據(jù)元素的有序表(05,13,19,21,37,56,64,75,80,88,92),現(xiàn)要查找關(guān)鍵字為21和70的數(shù)據(jù)元素。1、折半查找例1234567891011513192137566475808892lowhighmid找701234567891011513192137566475808892lowhighmid1234567891011513192137566475808892lowhighmid1234567891011513192137566475808892lowhighmid1234567891011513192137566475808892lowhigh2、折半查找的性能分析上述11個元素的表的具體例子。每一個的比較次數(shù)。這個查找過程可用圖8.1所示的二叉樹來描述。樹中每個結(jié)點表示表中一個記錄,結(jié)點中的值為該記錄在表中的位置,通常稱這個描述查找過程的二叉樹為判定樹。81121074193651234567891011513192137566475808892從判定樹上可見,查21的過程恰好是走了一條從根到結(jié)點(4)的路徑,和給定值進行比較的關(guān)鍵字個數(shù)為該路徑上的結(jié)點數(shù)或結(jié)點4在判定樹上的層次數(shù)。二分法查找在查找成功時進行比較的關(guān)鍵字個數(shù)最多不超過樹的深度,而具有n個結(jié)點的判定樹的深度為log2n+1。所以折半查找法在查找成功時和給定值進行比較的關(guān)鍵字個數(shù)至多為log2n+1對于任意的n,當n較大(n>50時),可有下列近似結(jié)果:可見,折半查找的效率比順序查找高,但折半查找只適用于有序表,且限于順序存儲結(jié)構(gòu)。樹中層數(shù)為1的結(jié)點有1個,層數(shù)為2的結(jié)點有2個,層數(shù)為h的結(jié)點有2h-1個。假設(shè)表中每個記錄的查找概率,則查找成功時折半查找的平均查找長度為:12345678910111213141516171822121389203342443824486058745786532248861713索引表查38三、索引順序表的查找(分塊查找)若以索引順序表表示靜態(tài)查找表,則search函數(shù)可用分塊查找來實現(xiàn)。分塊查找又稱索引順序查找,這是順序查找的一種改進方法。在此查找法中,除表本身以外,尚需要建立一個“索引表”。例如:下圖所示為一個表及其索引表,表中含有18個記錄,可分成三個子表(R1,R2,…,R6)、(R7,R8,…,R12)、(R13,R14,…,R18)。分塊查找方法所謂“分塊有序”指的是第2個子表中所有記錄的關(guān)鍵字均大于第1子表中的最大關(guān)鍵字,第3子表中的所有關(guān)鍵字均大于第2字表中的最大關(guān)鍵字,依次類推,分快查找過程需分兩步進行。先確定待查記錄所在的塊(子表),然后在塊中順序查找。此時的平均查找長度不僅和表長有關(guān),而且和每一塊中的記錄個數(shù)s有關(guān)。分塊查找的平均長度為:ASLbS=Lb+Lw其中Lb為查找索引表確定所在塊的平均查找長度,Lw為在塊中查找元素的平均查找長度。三、索引順序表的查找(分塊查找)順序查找二分法查找分塊查找ASL最大最小兩者之間表結(jié)構(gòu)有序表無序表有序表分塊有序表存儲結(jié)構(gòu)順序存儲結(jié)構(gòu)線性鏈表順序存儲結(jié)構(gòu)順序存儲結(jié)構(gòu)線性鏈表查找甩方法布的比搬較9.聰2動態(tài)帝查找對表動態(tài)漸查找抬表的癥特點丹:表結(jié)茄構(gòu)本玩身是疑在查傘找過晝程中訪動態(tài)僻地生漂成的眉,即粘對于昌給定艦值ke答y,若逼表中唉存在典其關(guān)葵鍵字賠等于ke抄y的記田錄,資則查捷找成祖功返鼓回,康否則片插入催關(guān)鍵方字等罷于ke鋤y的記限錄。一、喊二叉辭樹排銀序樹鄰及其早查找侍過程1、什芒么是懂二叉臘排序均樹?二叉拖排序提樹或絡(luò)是一半棵空框樹;進或是塊具有漿下列模性質(zhì)警的二華叉樹案:(1)若秋它的列左子途樹不膀空,姻則左緣瑞子樹巷上所想有結(jié)輸點的師值均跟小于采它的相根結(jié)曉點的破值;(2)若錦它的周右子客樹不借空,查則右欺子樹精上所證有結(jié)冒點的局值均話大于?;虻妊谒鼮⒌母鶄憬Y(jié)點壓的值優(yōu);(3)它胃的左含、右定子樹猜也分隨別為開二叉周排序辨樹。一、揭二叉發(fā)樹排瞧序樹聾及其套查找倚過程2、查受找過誕程90782410061373531245例如及右圖嫌所示蒙為二艦叉排牢序樹賢。若二兩叉排爹序樹妙為空嶺,則葬查找樸不成斗功;攏否則(1)若辛給定勇值等住于根急結(jié)點劫的關(guān)顫鍵字蹤蝶,則豆查找跌成功靈;(2)若劈燕給定忍值小諷于根羞結(jié)點么的關(guān)襪鍵字漏,則雨繼續(xù)練在左屠子樹梁上進驚行查彩找;(3)若勉給定潮值大遷于根候結(jié)點伐的關(guān)雄鍵字葡,則早繼續(xù)掀在右再子樹沸上進半行查賤找。查找餓過程陣舉例紅:10壓0、4090782410061373531245一、怠二叉舊樹排斯序樹扛及其摔查找譜過程二、宮二叉妹排序場樹的兆插入稱與刪玩除1、二根叉排閃序樹訪的插毀入二叉撿排序餃樹是阿一種全動態(tài)益樹表握。其扶特點渠是:德樹的雁結(jié)構(gòu)孟通常沸不是槍一次捕生成漫的,籮而是能在查欲找過齊程中究,當樹糕中不球存在田關(guān)鍵嶄字等云于給徐定值慎的結(jié)華點時渣再進臥行插養(yǎng)入。新棕插入緣瑞的結(jié)純點一杯定是煎一個殊新添絡(luò)加的奴葉子路結(jié)點倦,并春且是吳查找激不成皇功時謊,查頁找路氏徑上蛋訪問耐的最縮慧后一副個結(jié)緩點的利左孩磁子或宰右孩量子結(jié)其點。舉例吃:若猾從空鞭樹出違發(fā),伴經(jīng)過受一系擠列的鐵查找爪插入百操作緩之后餅,可章生成疾一棵賠二叉良樹。降設(shè)查建找的挑關(guān)鍵怎字序蘇列為{4詞5,24,53,45,12,24,90篩},則程生成孟的二臭叉排綢序樹默。二老叉排妨序樹禽生成發(fā):從例空樹哥出發(fā)熊,經(jīng)資過一犧系列診的查就找、叨插入束操作直之后嗽,可仰生成綱一棵賄二叉殲排序省樹。中序抬遍歷罰二叉業(yè)樹可怪得到館一個密關(guān)鍵恨字的沉有序浮序列嫂。即缸,一阻個無書序序隆列可撥以通記過構(gòu)位造一稍棵二覺叉排默序樹仆而變泳成一哨個有患序序煤列,棋構(gòu)造江樹的倘過程睡即為曾對無但序序糟列進此行排豬序的吸過程親。每次急插入亮的新陰的結(jié)寨點都盞是二嶄叉排館序樹貴上新克的葉病子結(jié)使點,額則在答進行添插入喂操作欲時,頸不必較移動洪其它介記錄巡壽,僅雙需要社改動附某個發(fā)結(jié)點羞的指風(fēng)針,偉由空具變?yōu)槌夥强諝埣纯陕?。這腔就相睜當于戶在一炎個有搶序序罩列上云插入惑一個織記錄擺而不爸需要眾移動蠢其它鎖記錄杜。表賤明:二叉吼排序河樹既少擁有職類似揪折半印查找逗的特疤性,胞又采處用了睡鏈表蜜作存出儲結(jié)炮構(gòu),回因此熟是動擠態(tài)查只找表扮的一州種適魯宜表削示。24455312901、二丙叉排槍序樹德的插致入2、二改叉排案序樹童的刪增除對于舍一般梯的二頸叉樹幟來說槐,刪苗除樹吐中一盟個結(jié)馳點是面沒有睜意義比的。古然而濱,對陽于二侮叉排里序樹水,刪改去樹塔上一鍛個結(jié)逐點相床當于沫刪去飼有序殖序列養(yǎng)中的預(yù)一個蔬記錄耕,只窯要在川刪除縱某個逢結(jié)點順之后痰,依已舊保牽持二掛叉排莖序樹掏的特滅性即宗可。(1)辭*P為葉歐子結(jié)粒點如何輔在二沫叉排智序樹跪上刪讓去一炎個結(jié)獄點呢接?假著設(shè)在已二叉織排序林樹上兼被刪女結(jié)點饑為*P,其咱雙親吩結(jié)點流為*F,且版不失轉(zhuǎn)一般薄性,錢可設(shè)膝*P是*F的左雙孩子盾。要強刪除灶二叉港排序捉樹中貢的P結(jié)點淡,分撲三種碌情況縣:即PL和PR均為協(xié)空樹站。由才于刪途去葉易子結(jié)畢點不斧破壞令整棵脂樹的厲結(jié)構(gòu)鹽,則只需雅修改鉗其P雙親F的指每針F-鐘>l逮ch運il唯d=朽NU稠LL或F-府>r賊ch啟il恥d=撓NU鞭LL。SQPLP中序遍歷:QSPLPSQPL中序遍歷:QSPL(2)SPPLQ中序遍歷:PLPSQSPLQ中序遍歷:PLSQ(1)(2)衫*P只有出左子攀樹PL或右兇子樹PR此時應(yīng)只要撲令PL或PR直接找成為陸其雙忽親結(jié)滴點*F的左忍子樹愿即可惠,顯問然,諒作此斬修改蜂也不憐破壞為二叉氣樹的覽特性女。中序遍歷:PPRSQSPRQ中序遍歷:PRSQ(3)SPPRQ中序遍歷:QSPPRSQPR中序遍歷:QSPR(4)SQPRP(2)加*P只有卸左子冶樹PL或右焦子樹PR(3)艦*P左、亮右子遺樹均腔非空FPCPRCLQQLSSL中序遍歷:CLC……QLQSL
SPPRFFSCPRCLQQLSL中序遍歷:CLC……QLQSLSPRF(5)在刪已除*P之前螺,中基序遍拾歷二惹叉樹箱得到倚的序駛列為{…啞…C附LC謎QL蹤蝶QSLSPPRF…爺…},刪各除*P之后春,為民保持惰其它冰元素國之間塊的相咽對位壁置不戴變,冶可以貌有兩奪種:控其具一是寨令*P的直商接前奸驅(qū)(色或直腹接后止繼)椒替代魄*P,然嚷后再崗從二欄叉排慣序樹勇中刪頂去它頃的直欠接前而驅(qū)(總或直候接后控繼)螺,如棋下圖城所示禮。其二坊是令擊*P的左嘉子樹域為*F的左悄子樹辜,而艱*P的右衣子樹債為*S的右銀子樹萄,如希下圖綠所示妥。FPCPRCLQQLSSL中序遍歷:CLC……QLQSL
SPPRFFCPRCLQQLSL中序遍歷:CLC……QLQSL
SPRF(5)S刪除確算法例805012060110150557053刪除508060120110150557053刪除60805512011015053701042581354刪除1084255134刪除58425413三、敘二叉嚴排序融樹的塔查找揭分析二分親法查攤找長略度為n的表等的判獅定樹訂是唯綁一的廊,而罪含有n個結(jié)聚點的堪二叉螞排序隙樹卻曠不是門唯一央的。張由關(guān)旋鍵字艇序列{4塔5,據(jù)24蛙,5拋3,友12乖,3鼻7,怨93驗}構(gòu)造廊而得等的二適叉排程序樹(a悶),455393243712a241237455393bAS甘L腎=(1+培2+邁2+任3+趴3+椅3)/桌6化=隙14拾/6由關(guān)款鍵字晚序列{1普2,帥24悅,3淡7,掛45躁,5鳳3,橡93太}構(gòu)造炊而得艘的二藍叉排妙序樹AS讓L凝=(1+稍2+顯3+屋4+每5+棒6)/6尤=2針1/胖6因此境,含有n個結(jié)叔點的胸二叉壺排序綁樹的僻平均慶查找毛長度凳和樹芒的形總態(tài)有裁關(guān)。當束先后銜插的苗關(guān)鍵纖字有且序時莖,構(gòu)天成的貝二叉賞排序疫樹蠕堂變?yōu)樵鰡沃в迾?。抗樹的孟深度鴨為n,其激平均凈查找頂長度拔為(n+太1)/2,和網(wǎng)順序第查找移相同跟,這芽是最跑差的欺情況欣,顯次然,掠最好命的情留況是奴二叉賄排序薯樹的執(zhí)形態(tài)旬和二期分法梅查找絡(luò)的判筒定樹生相同御,其萄平均綠查找劣長度公和lo央g2n成正燙比。縫那么爺,它姥的平怪均性陸能如療何?由此通可見蘋,在撤隨機退的情厲況下碗,二雖叉排扇序樹濃的平邁均查凡找長油度和lo壤g犧n是等形數(shù)量挖級的鳥。然幸而,矩在某佳些情脆況下漆(有艙人研陵究證進明,氏這種差情況毯出現(xiàn)觀的概妻率約晴為46露.5獄%)。薪尚需銅在構(gòu)秀成二病叉排皂序樹漲的過斗程中蹈進行躬“平光衡化榴處理增”,竄成為輩二叉唇平衡基樹。三、命二叉優(yōu)排序悠樹的拍查找津分析四、算平衡霉二叉?zhèn)€樹1、平位衡二求叉樹平衡從二叉雅樹,釣它或煉者是皆一棵煙空樹去,或樹者是徒具有炸下列臥性質(zhì)稻的二潮叉排鬼序樹葵:它噴的左惱子樹葛和右縱子樹辭都是柱平衡編二叉菠樹,愧且左逆子樹激和右廳子樹尼高度鋒之差轉(zhuǎn)的絕見對值劇不超列過1。若將婆二叉啞樹上遭結(jié)點哭的平絞衡因據(jù)子BF美(B泥al毀an態(tài)ce珍F終ac務(wù)to誘r)定義問為該驅(qū)結(jié)點糾的左掠子樹潑的深隔度減駁去它閉的右編子樹期的深踏度,縱則平區(qū)衡二李叉樹評上所雨有結(jié)今點的紐奉平衡仇因子奧只可戶能是-1,0,1。只沈要二柏叉樹屯上有勒一個繭結(jié)點圍的平犧衡因困子的關(guān)絕對視值大致于1,則勉這棵藥樹就嚇不是檢平衡斗二叉贊樹。平衡喝二叉響樹的迫優(yōu)點諒:它的忌平均產(chǎn)查找遙長度示和lo慮gN同數(shù)增量級啄。1、平伙衡二絨叉樹1100平衡猛二叉英樹不平融衡二架叉樹0100-11-10100-120100-20-1構(gòu)造鼠二叉?zhèn)绕胶饪埃ú檠菡遥┢迾涞乃逊椒ㄛ`是:佛在插萍入過樂程中航,采帶用平真衡旋具轉(zhuǎn)技伸術(shù)。例如:依次堪插入倒的關(guān)唐鍵字息為5,連4則,質(zhì)2,速8唇,狂6,中95424258665842向右茫旋轉(zhuǎn)一次先向失右旋比轉(zhuǎn)再向箭左旋晶轉(zhuǎn)2、如芳何使遭二叉渡排序咳樹成肅為平殃衡二紅叉樹426589426895向左用旋轉(zhuǎn)耳一次繼續(xù)出插入惡關(guān)鍵念字9二叉塊樹的裳平衡音處理球調(diào)整陪的規(guī)暖律可拔歸納蜂為下股列四利種情堪況1B2ABLhARh-1BRh-1插入結(jié)點0A0BBLBRARLL(1)單耗向右塔旋平譯衡處竭理杯由效于在校結(jié)點沸*a的左靜子樹停根結(jié)甘點的甚左子迷樹上折插入觀結(jié)點后,*a的平溫衡因速子由1增加寶到2,致蛙使以前*a為根躲結(jié)點州的子雖樹失剩去平磁衡,票則需為要進險行一劑次向替右的減順時趣針旋屑轉(zhuǎn)操虎作,贊如圖均所示燭。中序有遍歷簡:BLB志BRA懸AR(2)單婚向左什旋平劍衡處怖理-1B-2ABRhALh-1插入結(jié)點RR0A0BALBLBRBLh-1由于戶在*a的右硬子樹延根結(jié)淺點的煌右子楊樹上像插入標結(jié)點籌,*a的平模衡因氣子由-1變?yōu)?2,致賤使以黃*a為根武結(jié)點跨的子蝴樹失竄去平肉衡,歌則需既要進裂行一蛇次向猜左的周逆時革針旋塔轉(zhuǎn)操魔作,學(xué)如圖叫所示慨。中序冒遍歷娘:ALA煤BLB榨BR(3)雙糟向旋水轉(zhuǎn)(登先左燦后右接)平輸衡處承理-1B2ACLh-1ARh-1h-1BL插入結(jié)點0B0CBLCLCRLRAR-1A1Ch-2CR中序榴遍歷下:B申CLC沈CRA芝AR由于未在*a的左田子樹夜根結(jié)真點的抄右子倉樹上云插入狀結(jié)點平,*a的平賭衡因念子由1增加弦到2,致鐘使以抬*a為根危結(jié)點截的子宜樹失晝?nèi)テ綕B衡,師則需唇要進逃行兩卻次旋仗轉(zhuǎn)(廣先左奶旋后育右旋喬)操箏作,餅如圖忌所示濫。(4)雙征向旋某轉(zhuǎn)(徹先右著后左?。┢筋B衡處逢理-1B-2ACLh-1h-1AL插入結(jié)點0A0CALCLCRRLBR-1B1CBRh-1CRh-2中序漁遍歷倍:ALACLCCRBBR由于棄在*a的右湯子樹顛根結(jié)鑰點的們左子陵樹上屠插入渡結(jié)點蚊,*a的平闖衡因脹子由-1增加踐到-2,致糕使以習(xí)*a為根根結(jié)點排的子饅樹失狼去平勉衡,仗則需恢要進爛行兩率次旋壤轉(zhuǎn)(乏先右葵旋后醋左旋守)操評作,忠如圖級所示們。3、在男平衡長樹的訓(xùn)二叉談排序頓樹BB君S上插攻入一知個新筆的數(shù)怨據(jù)元詠素(1)若BB釋ST為空恐樹,尼則插辱入一費個數(shù)統(tǒng)據(jù)元沉素為e的新楊結(jié)點貴作為BB裳ST的根蕉結(jié)點曉,樹帶的深曲度加1;(2)若e的關(guān)耍鍵字鋤和BB奧ST的根由結(jié)點花的關(guān)課鍵字您相等暖時,水則不助進行相插入爪;(3)若e的關(guān)醒鍵字揭小于BB遙ST的根爆結(jié)點烘的關(guān)輩鍵字大,而孕且在BB術(shù)ST的左勻子樹畏中不姑存在至和e相同報關(guān)鍵啦字的掛結(jié)點分,則盛插入蹦在BB拔ST的左窩子樹殼上,娃并且羅當插中入之肝后的小左子精樹深貌度增紐奉加(+1)時川,分牢別就光不同乒情況級處理螞之。*B匙BS楊T的根伐節(jié)點何的平鋪衡因好子為1(左筍子樹正的深脅度大哀于右馳子樹穗的深蠢度)妙:*B男BS嗎T的根嘗節(jié)點喊的平協(xié)衡因競子為-1(右買子樹薯的深祝度大濁于左紀子樹者的深停度)蝴:則慨將根膨結(jié)點桿的平置衡因摔子更接改為0,BB塊ST的深緒度不合變;*B柜BS耀T的根療節(jié)點蔬的平愿衡因伯子為0(左時、右仔子樹棋的深散度相蘋等)仍:則滑將根部結(jié)點芹的平跨衡因嬌子更舍改為1,BB蛾ST的深劍度加1;若BB河ST的左染子樹屑根結(jié)取點的狀平衡扇因子估為-1,則嬌需進那行先取向左坐、后恒向右鍛的雙吐向旋郊轉(zhuǎn)平襲衡處授理,定并且壘在旋兵轉(zhuǎn)處罵理之裕后,述修改脹根結(jié)棚點和邁其左溉、右母子樹達根結(jié)燈點的姻平衡屑因子繡,樹熔的深護度不晃變。若BB功ST的左圍子樹芽根節(jié)蔬點的固平衡權(quán)因子惜為1,則耳需要徐進行遷單向由右旋尼平衡出處理直,并板且在堂右旋凈處理陸之后概,將叔根結(jié)戀點和牛其右泰子樹課根結(jié)頭點的連平衡飯因子霞更改簽為0,樹袖的深來度不鎮(zhèn)變(4)若e的關(guān)蒸鍵字知大于BB窄ST的根噸結(jié)點營的關(guān)遞鍵字怎,而百且在BB躺ST的右懼子樹句中不懼存在義和e有相喜同關(guān)堡鍵字坑的結(jié)彎點,階則將e插入嚴在BB慌ST的右捐子樹撇上,殼并且醫(yī)當插煤入之銳后的銀右子畜樹深占度增界加(+1)時棄,分肅別就裝不同吉情況艦處理職之。惡其處啦理操浸作和膊(3)中炸所述帳相對暢稱。理想墨的情以況是漏希望冤不經(jīng)頃過任好何比如較,淺一次菠存取茅便能遮得到久所查面記錄維,那鼻就是話必須布在記集錄的擁存儲卷位置舌和它嚴的關(guān)來鍵字律之間虧建立宰一個攻確定共的對德應(yīng)關(guān)寒系f,使丘每個李關(guān)鍵況字和忙結(jié)構(gòu)厲中唯忍一的班存儲翻位置吳相對潛應(yīng)。硬因而童在查鳥找時完,只任要根鴉據(jù)這歌個對易應(yīng)關(guān)雕系f找到菊給定黎值k的像f(販k)。我俘們稱這個估對應(yīng)糾關(guān)系f(朋k)為哈寇希函端數(shù),造按照轉(zhuǎn)這個犧思想挖建立糕的表浪為哈臂希表碎。9.卻3哈希腎表(兼散列劇表和剩查找灰)編號地區(qū)號總?cè)丝跐h族回族….1北京假設(shè)盞要建疊立一撓張全墓國30個地普區(qū)的須各民刑族人磁口統(tǒng)件計表應(yīng)。顯然難,可雖以用禮一個俗一維案數(shù)組C(1:30)來味存放彩這張術(shù)表,朝其中C[評i]是編瞞號為i地區(qū)針的人智口情邁況。掛編號i便為娛記錄您的關(guān)惜鍵字辜,由底它唯頁一確役定記糧錄的咸存儲民位置C[洗i]。Keybeijing北京tianjin天津Hebei河北shanxi山西Shanghai
上海Shandong山東henan河南sichuan四川f1(key)0220081919190819f2(key)0904172828262203f3(key)0426021323171616為了慣查找鼠方便鉛應(yīng)以也地區(qū)周名作先為關(guān)嗽鍵字朝。假敲設(shè)地磁區(qū)名追以漢伍語拼寺音的催字符弱表示歲,則蒜不能純簡單楚地取燒哈希眾函數(shù)偽,而教是首頑先要雅將它掉們轉(zhuǎn)問化為串數(shù)字立。(1)取普關(guān)鍵姜字的邀第一餓個字避母在昌字母塔表中學(xué)的序臂號作默為哈敞希函飾數(shù);(2)先露求關(guān)抄鍵字茄的第垂一個粉和最返后一析個字謠母在石字母羽表中搶的序厚號之剪和,柿然后雜判別紗這個刑值。開若比30大,胸則減孔去30。(3)先醒求每碧個漢歐字的抱第一竊個拼險音字岔母的AS駐CI垮I碼之姨和的殼八進提制形閉式,桿然后植將這流個八孫進制度數(shù)看乘成是瓣十進處制再釣除以30取余集數(shù)。(1)哈委希函筍數(shù)只纖是一摘種映廢象,賤所以慌哈希棕函數(shù)濾的設(shè)暑定很雙靈活忙,只搬要使扎任何航關(guān)鍵工字的初哈希派函數(shù)圖值都扮落在刮表長溉允許擔的范墨圍之秋內(nèi)即矮可。(2)對們于不籠同的耐關(guān)鍵娃字可炊能得亦到同賴一哈震希地妖址,垂即ke問y1懲k柱ey日2,但h(件ke獵y1得)=循h(huán)(害ke捆y2努),這腹種現(xiàn)劇象叫沖突。在一惰般情基況下塔,沖突唯只能屢盡可逝能地鄙少,購而不俊能完務(wù)全避過免。9.箏3哈希艱表(題散列您表和霸查找削)具有跡相同闊函數(shù)懸值的擱兩個評關(guān)鍵濃字對唯該哈喘希函儲數(shù)來需說稱更做同聰義詞。根據(jù)姑設(shè)定厘的哈婚希函剩數(shù)和舅處理請沖突定的方?jīng)_法將一組姨關(guān)鍵酸字映擾象到瞧一個截有限攏的連幼續(xù)的羊地址啄集(悅區(qū)間看)上,9.墾3哈希據(jù)表(父散列鳥表和對查找券)這一摟映象歲過程傾稱為哈希歲表或帽散列,所得際到存?zhèn)儍ξ还梅Q哈希垃地址諸或散窮列地圖址。并以妥關(guān)鍵踢字在振地址崖集中樓的“比象”帥作為均記錄獄在表貞中的鞠存儲據(jù)位置,這若種情頑況便掘稱為哈希畜表,二、糖哈希以函數(shù)停的構(gòu)殖造方衛(wèi)法若對能于關(guān)徹鍵字暫集合摘中的倡任一享關(guān)鍵詠字,槽經(jīng)哈散希函允數(shù)映爸象到佩地址件集合鎖中任櫻何一味個地鹿址的融概率和是相更同的霧,則堅此類依哈希敵函數(shù)即為均棚勻的緒哈希播函數(shù)考。直接匙定址理法數(shù)字巖分析燭法平方妥取中綢法折疊敲法除留索余數(shù)腸法1、直資接定搶址法取關(guān)掌鍵字朝或關(guān)廳鍵字淺的某助個線劇性函跪數(shù)作排哈希攝地址拴,即h(錫ke芝y)鎮(zhèn)=k燭ey或h(摟ke啦y)膨=a炒·k降ey劈燕+b地址01020325年齡12325人數(shù)3000200050001050例如貓:有描一個煩從1歲到10或0歲的尿人口障數(shù)字炭統(tǒng)計促表,第年齡恰作為爪關(guān)鍵廳字,苦哈希江函數(shù)謹取關(guān)叮鍵字彼自身罪。又如姥:有枕一個敘解放播后出系生的液人口啟調(diào)查最表,嫁關(guān)鍵參字是贈年份暈,哈冷希函京數(shù)取擺關(guān)鍵算字加周一常捐數(shù):h(淘ke仗y)=k妖ey志+(窄-1原94罪8)地址010203….22年份194919501951…1970人數(shù)…15000這樣交,若骨要查19為70年出都生的謎人數(shù)防,則刷只要聚查(19春70菌-1肚94幕8)=2湖2項即針可。望由于此直接銜定址乏所得始地址屠集合句和關(guān)詳鍵字奮集合榴的大攏小相據(jù)同,沿因此蠅不會墨發(fā)生榆沖突摘,但實弦際中什能使講用這峰種哈逐希函纖數(shù)的桶情況縫很少偽。1、直招接定艦址法2、數(shù)庫字分株析法當鍵繡值的沸位數(shù)布比存村儲區(qū)助域地睜址碼渠位數(shù)按多時搖,可片以對獨鍵值暴的各厘位進紀行分奸析,陡去掉前分布價不均揉勻的否位,坦留下形分布奶均勻矛的位濕作為饒地址弓。所草選取經(jīng)的位桑數(shù)和敢散列涌地址卵的位浸數(shù)相江同。因取哪增兩位汗?原單則是貢使得晌到的必哈希隸地址冠盡量丹避免濟產(chǎn)生燒沖突豈。8134653281372242813874228130136781322817813389678136853781419355…..…..
只取8只取1只取3、4只取2、7、5數(shù)字分布近乎隨機取任意兩位或兩位與另兩位的疊加作哈希地址3、平培方取獵中法記錄關(guān)鍵字(關(guān)鍵字)2哈希地址(217~29)A01000010000010I11001210000210J12001440000440I011601370400370P120614310541310通常妙在選買定哈缺希函姥數(shù)時嘆不一水定能若知道矛關(guān)鍵穿字的驅(qū)全部雷情況挖,取夫其中麻哪幾茄位也滾不一滲定合住適,驚而一傳個數(shù)組平方區(qū)后的刑中間汁幾位著數(shù)和鍋數(shù)的襲每一往位都革相關(guān)圓,由議此使岔隨機蠶分布器的關(guān)猴鍵字羨得到攜的哈旱希地棒址也成是隨璃機的備。取吐的位屈數(shù)由開表長酒決定裕。仔例如致:為BA用SI梅C源程陜序中猴的標環(huán)識符4、折盼疊法將關(guān)劃鍵字乓分割明成位蠟數(shù)相屋同的論幾部東分(裂最后維一部瞧分的呈位數(shù)誓可以撥不同沉),猴然后枕取這嚷幾部困分的型疊加情和(蚊舍去叼進位籠)作榨為哈斑希地給址。同這方忌法稱嘩為折蔬疊法鑼。關(guān)劉鍵字邀位數(shù)糧很多佳,而羽且關(guān)育鍵字摟中每桂一位森上數(shù)族字分復(fù)布大眉致均勒勻時杜,可淡以采熔用折蛾疊法黨得到肯哈希廣地址儀。例貞關(guān)鍵知字為葬:04槐42邀20鐵58可64,哈猜希地偷址位回數(shù)為4586442200410088H(key)=0088移位疊加5864022404
6092H(key)=6092間界疊加移位呼疊加:將榴分割腳后的嘴幾部杜分低膏位對吼齊相眨加適于企關(guān)鍵錢字位灰數(shù)很仙多,趣且每倡一位泛上數(shù)潛字分勺布大補致均虛勻情設(shè)況間界踐疊加:從雜一端謀沿分漆割界概來回乘折送次,然商后對曲齊相廚加取關(guān)肝鍵字蠶被某昆個不剪大于筒哈希篇表表渣長m的數(shù)p除后臨所得恭余數(shù)駝作哈緞希地勻址,很即5、除翠留余映數(shù)法關(guān)鍵字28356377105哈希地址7140140P=很21特點珍:簡單倦、常價用,粥可與餃上述怎幾種泰方法冒結(jié)合杜使用崇,p的選奪取很解重要致;p選的食不好臥,容貞易產(chǎn)脅生同澆義詞栽。H(棍ke倚y)于=k斬ey定M跟OD司p,p籍m隨機假數(shù)法此構(gòu)造:選挎擇一毅個隨席機函懶數(shù),肉取關(guān)圖鍵字床的隨塞機函爛數(shù)值跌為它莊的哈記希地倦址,導(dǎo)即H(肥ke知y)牙=r唱an執(zhí)do難m(顧ke鞏y),其某中ra稈nd追om浩(k神ey近)為隨屯機函伶數(shù)。允通常奮,當守關(guān)鍵殿字長孝度不明等時鎮(zhèn)采用揭此法喝構(gòu)造戴的哈漫希函浮數(shù)較寫恰當超。6、隨補機數(shù)名法實際梢工作腿中需黨視不傘同的掘情況嘴采用擋不同舅的哈宜希函塵數(shù)。昨通常哨考慮抹的因些素有厘:(1)計棒算哈擴希函情數(shù)所強需時探間(2)關(guān)廳鍵字躺的大處?。?)哈糖希表望的大岸小(4)關(guān)釋鍵字宗的分貧布情芹況(5)記烤錄的癥查找慢頻率三、掙處理倚沖突值的方血法通常殿用的苦處理辮沖突鑼的方溫法有臭下列范幾種蜜:開放迅定址掏法再哈特希法鏈地那址法建立精一個縮慧公共漫溢出種區(qū)開放趣定址暢法奴方法:當匙沖突應(yīng)發(fā)生肺時,憂形成弄一個潛探查孔序列刺;沿忘此序妙列逐喉個地護址探瘋查,趟直到尊找到紐奉一個字空位兩置(蒼開放簽的地淹址)羞,將句發(fā)生媽沖突轟的記味錄放裂到該圾地址鍬中,西即Hi涂=(唱H(驅(qū)ke利y)丙+di)紋MO瓜D她m,i=沙1,烘2,嘉……擊k同(k向m很-1口)1、開爪放定扯址法其中褲:H(槐ke橋y)盼——哈希薦函數(shù),m—示—哈希悅表表吩長,di赤——增量處序列di有下右列三信種取愉法線性夢探測炮再散聞列:di=1動,2臣,3候,…捕…m拋-1二次聲探測環(huán)再散診列:di=1通2,暖-1畜2,芳22芳,-持22呼,3側(cè)2,領(lǐng)……員±k艇2(潛k項m/爽2)偽隨納機探植測再察散列:di=偽隨劍機數(shù)勤序列例惑表勝長為11的哈石希表昆中已雙填有搬關(guān)鍵根字為17,60,29的記歷錄,H(稱ke畢y)合=k朗ey指MO離D粒1堡1,現(xiàn)有襪第4破個記簽錄,只其關(guān)領(lǐng)鍵字授為3軍8,捎按三雕種處尿理沖平突的拔方法哲,將膏它填慌入表簽中(1困)不H策(3襪8)急=3泡8校MO績D吩11珠=5沖突H1勉=(寨5+努1)祥M扯OD圖1迎1=緣瑞6沖突H2孩=(幫5+鋼2)甩M意OD掉1探1=爭7沖突H3潛=(謹5+娛3)夢M時OD初1后1=殘8不沖巧突(2池)竟H養(yǎng)(3撿8)技=3刪8年MO贊D盞11籌=5沖突H1文=(蓮5+平12腿)驅(qū)MO露D凱11渣=6沖突H2頑=(貌5-覺12部)剖MO絡(luò)D示11紗=4不沖吧突(3為)帽H混(3遣8)甲=3柄8娛MO境D壯11里=5,沖突,設(shè)溪偽隨窮機數(shù)祥序列渴為9,則辮:H1件=(隨5+懶9)縫M點OD稈1顧1=晚3不沖聲突012345678910601729383838構(gòu)造等若干久個哈荒希函悲數(shù),籠當發(fā)橫生沖葛突時打,計繳算下濱一個功哈希抵地址漏,即萌:2、再薪哈希河法其中Rhi均是不同慨的哈脖希函旅數(shù),政即在宴同義按詞產(chǎn)鍬生地捷址沖顏突時脹計算白另一模個哈搖希函溉數(shù)地防址,蝴直到吩沖突悔不再文發(fā)生候。這美種方辱法不小容易爹產(chǎn)生“聚好集”帳,但吧增加偏了計衛(wèi)算的節(jié)時間盼。Hi=R選hi(k引ey茅)貸i=贈1,索2,稈……兄k3、鏈稀地址圾法將所裙有關(guān)喝鍵字農(nóng)為同羨義詞貼的記絨錄存和儲在扭一個查單鏈糞表中找,并真用一約維數(shù)奪組存完放頭省指針帆。例萄如已巨知一扭組關(guān)斷鍵字(1選9,旦1列4,桶2哭3,譜1,爭68貓,2殿0,劈燕84欄,2送7,臥55夠,1挺1,惕10換,7賺9)哈希刮函數(shù)敬為:H(扒ke晚y)碧=k脫ey訊M攔OD織1叮3,其每亂個分喂量的負初始仍狀態(tài)匠都是茂空指悲針。印凡哈躁希地絲式址為I的記姓錄都肝插入吃到頭值指針填為ch始ai扶nH諸as睜h[越i]的鏈洽表中縫。在展鏈表園中的黃插入擇位置尋可以診在表預(yù)頭或春表尾阻;也令可以婆在中梁間,這以保助持同活義詞發(fā)在同您一線至性鏈侍表中壓按關(guān)交鍵字潤有序局。011427795568198420102311^^^^^^131211109876543214、建坡立一顯個公爛共溢淡出區(qū)假設(shè)也哈希涂函數(shù)扛的值森域為[0,m-鏟1],則循向量Ha賣sh跡T到ab遲le膊[0窗,m逢-1啊]為基憑本表長,每政個分遺量存仔放記怎錄,死另設(shè)蹈立向桿量Ov即er猴T壓ab辨le搖[0射,v傻]為溢塑出表潤。所廈有關(guān)蓮鍵字窄和基嬸本表舉中關(guān)結(jié)鍵字株為同寇義詞客的記秀錄,訴不管斥它們策由哈尖希函餐數(shù)得靠到的獨哈希這地址購是什棗么,柱一旦摘發(fā)生念沖突泊,都院填入趣溢出麻表四、帽哈希距表的足查找貍與分領(lǐng)析1、哈高希表勾的查抄找過廣程在哈告希表蔬上進親行查誕找的包過程陣和哈占希造潔表的紙過程勤基本六一致拜。給柱定k值,雞根據(jù)飄造表渾時設(shè)擺定的軌哈希響函數(shù)性求得爬哈希救地址勝,若晌表中擔此位蓄置上沒沒有冠記錄邁,則場查找永不成刪功;否則殼比較拍關(guān)鍵萍字否則腎根據(jù)軟造表禽時設(shè)抄定的牛處理樣沖突甜的方健法找理“下妙一地潮址”趴,直守至哈羽希表拳中某巖個位鄰置為神“空練”或跌者表芝中所茅填記喜錄的螺關(guān)鍵速字等路于給睛定值皇時為峰止。若和其給定碰值相沾等,璃則查物找成模功;例井已現(xiàn)知一賓組關(guān)秘鍵字(1簽9,莖14王,2父3,度1,決68低,2和0,波84戚,2電7,換55巖,1便1,仍10至,7垂9),煌哈希驗函數(shù)妨為:H(責(zé)ke探y(tǒng))句=k征ey第M耽OD蔥1言3,哈希緒表長勿為m=產(chǎn)16,設(shè)每塘個記螞錄的舟查找聰概率腐相等(1遍)用線材性探太測再顯散列緊處理蔽沖突疤,即Hi=(笨H(襪ke知y)更+d福i)纖M沿OD梨mH(55)=競3沖突喜,H1桿=(汪3+虎1)旨MO胃D1許6=址4沖突餡,H2鞏=(肥3+毯2)膨MO貍D1凡6=抓5H(79)=舞1沖突斗,H1怪=(攤1+朱1)筆MO澇D1乘6=口2沖突奴,H2探=(徒1+謠2)耽MO尸D1萍6=定3沖突醬,H3殼=(出1+瘦3)刪MO動D1抓6=赴4沖突帝,H4飽=(違1+艦4)嫩MO域D1覺6=猴5沖突釀,H5話=(橋1+征5)腹MO軌D1逃6=孩6沖突殿,H6蹤蝶=(度1+催6)劫MO但D1藏6=餓7沖突羞,H7負=(滾1+陵7)慢MO喘D1鳳6=拘8沖突辮,H8沾=(桌1+北8)銹MO乖D1途6=旁90123456789101112131415AS盼L=約(1*6妖+2+3*3+4+9)/12=2免.514168275519208479231110H(19)=倚6H(14)=節(jié)1H(23)=密10H(1)=沈1沖突史,H1秩
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 34942-2025網(wǎng)絡(luò)安全技術(shù)云計算服務(wù)安全能力評估方法
- 護士崗位技能考試題及答案
- 電子商務(wù)專業(yè)期末試卷及答案資源
- 建筑給排水考試大全及答案(題庫)
- 螞蟻電商考試試題及答案
- 執(zhí)業(yè)護士考試職業(yè)道德規(guī)范試題及答案
- 院感三基試題及答案2025年
- 2025年執(zhí)業(yè)藥師繼續(xù)教育題庫及參考參考答案
- 阿里云客服試題和答案
- 急危重癥護理學(xué)模擬試題及參考答案
- 單杠引體向上教學(xué)課件
- 子宮內(nèi)膜異位癥病因課件
- 新型農(nóng)業(yè)經(jīng)營主體法律制度完善研究
- GB/T 18910.103-2025液晶顯示器件第10-3部分:環(huán)境、耐久性和機械試驗方法玻璃強度和可靠性
- 經(jīng)圓孔翼腭神經(jīng)節(jié)射頻調(diào)節(jié)術(shù)
- 夢雖遙追則能達愿雖艱持則可圓模板
- 能源與動力工程測試技術(shù) 課件 第一章 緒論確定
- 配件售后管理制度規(guī)范
- 浙江省紹興市上虞區(qū)2024-2025學(xué)年七年級上學(xué)期期末語文試題(解析版)
- 《隸書千字文》-清席夔
- 2024校長在寒假期末教職工大會上精彩發(fā)言主要引用3個關(guān)鍵詞善待自己改變自己提升自己
評論
0/150
提交評論