數(shù)據(jù)結(jié)構(gòu)查找表_第1頁
數(shù)據(jù)結(jié)構(gòu)查找表_第2頁
數(shù)據(jù)結(jié)構(gòu)查找表_第3頁
數(shù)據(jù)結(jié)構(gòu)查找表_第4頁
數(shù)據(jù)結(jié)構(gòu)查找表_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第九章查找

概述查找表——數(shù)據(jù)結(jié)構(gòu)同各種線性或非線性的數(shù)據(jù)結(jié)構(gòu)一樣,查找表也是一種在實際應(yīng)用中大量使用的數(shù)據(jù)結(jié)構(gòu)。查找表(SearchTable)是由同一類型的數(shù)據(jù)元素構(gòu)成的集合,集合中的數(shù)據(jù)元素之間存在著完全松散的關(guān)系。因此查找表是一種非常靈活的數(shù)據(jù)結(jié)構(gòu)。靜態(tài)查找表和動態(tài)查找表對查找表的常見操作:(1)查詢某個“特定的”數(shù)據(jù)元素是否在查找表中;(2)檢索某個“特定的”數(shù)據(jù)元素的各種屬性;(3)在查找表中插入一個數(shù)據(jù)元素;(4)從查找表中刪除某個數(shù)據(jù)元素。靜態(tài)查找表(StaticSearchTable),只對查找表作前兩種“查找”操作;動態(tài)查找表(DynamicSearchTable),若在查找過程中同時插入查找表中不存在的數(shù)據(jù)元素,或者從查找表中刪除已存在的某個數(shù)據(jù)元素,則此類查找表即為動態(tài)查找表。查找關(guān)鍵字,數(shù)據(jù)元素中某個數(shù)據(jù)項的值,用它可以標識一個數(shù)據(jù)元素。若它可以唯一標識一個數(shù)據(jù)元素,則稱此關(guān)鍵字為主關(guān)鍵字(PrimaryKey)(對不同的記錄,其主關(guān)鍵字均不同)。反之,用以識別若干數(shù)據(jù)元素的關(guān)鍵字為次關(guān)鍵字(SecondaryKey)。查找(Searching),根據(jù)給定的某個值,在查找表中確定一個其關(guān)鍵字等于給定值的數(shù)據(jù)元素。若表中存在這樣的一個記錄,則查找成功,查找的結(jié)果為給出整個記錄的信息,或指示該記錄的查找表中的位置;若表中不存在關(guān)鍵字等于給定值的記錄,則稱查找不成功,查找結(jié)果可以給出一個“空”記錄或“空”指針。例子準考證號姓名各科成績總分政治語文外語數(shù)學(xué)物理化學(xué)生物01章三85868810092904558602蘆花78759080958837543查找表關(guān)鍵字(主/次)查找成功/查找失敗例子電話號碼簿中查閱電話字典中查閱某個詞編譯程序中符號表信息處理系統(tǒng)中的信息表如何進行查找在一個結(jié)構(gòu)中查找某個數(shù)據(jù)元素的過程,依賴于數(shù)據(jù)元素在結(jié)構(gòu)中的地位,即依賴于數(shù)據(jù)元素的組織關(guān)系(人為的)。在計算機中進行查找的方法隨數(shù)據(jù)結(jié)構(gòu)不同而不同。

即隨查找表的不同而不同。9.1靜態(tài)查找表查找表的結(jié)構(gòu)查找過程描述查找性能分析查找方法比較順序表的查找有序表的查找靜態(tài)樹表的查找靜態(tài)側(cè)查找君表的抽董象數(shù)遠據(jù)類遼型P21裝69.南1.敬1順序鑰表的傅查找查找船表用一靠般的順序叛表或者線性像鏈表來表盟示靜替態(tài)查藏找表下。順序趴查找(S伯eq緊ue郊nt灶ia鏡l移Se熱ar滲ch往)從表久中最后添一個線記錄開始噴,逐耐個進津行記優(yōu)錄的朵關(guān)鍵凡字和換給定榜值的比較,若午某個炕記錄萬的關(guān)依鍵字遠和給年定值很比較青相等故,則查找慢成功,返許回該地記錄光在查沫找表嘴中的負位序誓;反慕之,四若直偏至第一題個記疤錄,其旅關(guān)鍵紅字和陜給定燥值比不較都轉(zhuǎn)不相凝等,扭則表詞中無罵此記租錄,查找登失敗權(quán),返陜回0。in掙tSe鑒ar剩ch攏_S蓋eq塞(S霸ST踢ab拳leST,Ke令yT班yp須eke裙y剃){提ST占.e衣le疲m[尼0]芒.k造ey隆=演k順ey登;//監(jiān)視由哨fo沾r(兵i鑄=汽S部T.慶le滾ng和th萄;龍!興E模Q(ST躲.e捷le艱m[白i]伯.k恐ey,連ke辯y剖)敵;蒜-閘-i撲);撕re程tu遺rn批i刷;//找不咽到時必,i為0}查找怕性能掙分析以其關(guān)鍵使字和態(tài)給定腎值進然行過男比較形的記姑錄個宿數(shù)的涌平均庭值作為娘衡量緊查找淘算法鞋好壞城的依騾據(jù)。定義袋:為率確定顛記錄雕在查遇找表甚中的坊位置逐,需聯(lián)和給穩(wěn)定值靈進行特比較往的關(guān)捏鍵字鈴個數(shù)堵的期帽望值均稱為捐查找蜂算法揭在查找拿成功時的平均吵查找言長度飾(Av殿er曾ag挽e舊Se龜ar灶chLe吹ng娃th宇e)。查找倦成功時的華平均炊查找妖長度AS朱L對于含有n個記錄的查找表,查找成功時的平均查找長度為

Pi為查找表中第i個記錄被查找的概率,Ci為找到爹表中莫其關(guān)盤鍵字擾與給拆定值丸相等盡的第i個記桐錄時滑,和浸給定蔬值已館經(jīng)進其行過軟比較鏡的關(guān)性鍵字桿個數(shù)吸。Ci隨查找例過程艇不同械而不攻同。在順為序查每找的擴過程計中,Ci取決優(yōu)于所輕查記色錄在顏表中旬的位追置,眼有Ci=轟n晌–即i切+1。順序仗查找至的平煩均查己找長辮度在等寬概率叔的情風(fēng)況下稠:在概返率不販等的協(xié)情況扔下:P21塵8查找皂不成交功時的AS優(yōu)L當查切找不增成功肢的情壯形不訪能忽爭視時,查孤找算煌法的沫平均踩查找盈長度改應(yīng)該懲是查說找成處功時套的平鐮均查富找長志度與調(diào)查找偉不成協(xié)功時軍的平鞠均查挖找長鴨度之渠和。對于襪順序嗎查找申表而系言,景若假海設(shè)查師找成裕功與正查找揉不成膝功的終可能揭性相慣同,諷則每豆個記躺錄的俗查找比概率抬相等Pi=1乓/2肯n,則有?。喉樞蛐伪淼脑鼉?yōu)缺科點:缺點阿:平劍均查捷找長喝度較賣大,敏特別倦是當n很大職時,讀查找呢效率裕較低繞。優(yōu)點邊:算精法簡守單,午適用蕉面廣澤。它稿對表蜂結(jié)構(gòu)跳無任哥何要斤求,拌無論持記錄趟是否立按關(guān)皮鍵字預(yù)有序昂均可惹。并菜且以亮上討腿論對憶于線性屬鏈表同樣繞適用吃。9.勿1.趟2有序路表的催查找查找佛表當靜盲態(tài)查侍找表煤是有序抬表(順該序表況)折半妥查找(B舅in曾ar晝y購S涂ea極rc瓣h)例如奶,已舞知有戶如下11個數(shù)淡據(jù)元掘素的呈有序穿表(意關(guān)鍵攤字即儲為數(shù)每據(jù)元森素的占值):峰(蛙05滑,敞13畜,首19斥,珍21棒,告37訓(xùn),跌56析,賺64掘,曠75揭,卻80干,傅88免,駝92憂)。現(xiàn)在貿(mào)要求嫩查找模關(guān)鍵夕字為21和85的數(shù)貴據(jù)元聯(lián)素。0513192137566475808892lowhighmidlowhigh例子給定昏值ke愧y休=扶21的查黃找過岔程:給定薦值ke劍y終=潔85的查咐找過美程:下界lo楊w>上界hi槐gh,查找啞不成咱功。in燒tSe踐ar抖ch稼_B憂in厲(SS銳Ta槐bl撥eST,Ke將yT已yp析eke扶y礎(chǔ)){尖l能ow旺=焰1拜;題h虧ig壓h油=靜ST坊.l震en龜gt跪h;抹w瘡hi價le叮(研l(wèi)o解w惑<=補h隙ig鞭h發(fā)){落mi濁d叮=混(杰lo糾w壤+政hi扒gh匯)鉗/撓2;權(quán)if槳EQ隱(覆ke師y訊,ST鍛.e板le右m[禍mi長d]驢.k遙ey)賤r芽et鋸ur遺n助m輕id裂;幕e臭ls脅e察i疫f膜L露T(息k疤ey垂,ST完.e員le茫m[岔mi敏d]銳.k秘ey)紛hi私gh訴=濃m朗id崇-1難;滋e蜘ls麗e淚l撓ow蝦=普m露id暈+滿1;凝}敏r剝et役ur暗n聲0居;騙}折半掏查找朽性能退分析折半胸查找證的判江定樹樹中匯每個練結(jié)點種表示顛表中強的一茄個記牙錄,雷結(jié)點竿中的像值為伐該記孔錄在限表中咳的位置。這或樣一販棵二風(fēng)叉樹王可以渠用來觀描述腫折半孕查找?guī)胚^程錦。6391427108115-11-23-42-34-55-67-88-96-710-1111-9-10折半近查找享性能微分析折半純查找龜查找地成功卵的過球程就伙是走了加一條客從根散結(jié)點拜到與喝該記園錄相待應(yīng)的貍結(jié)點楊的路莫徑,與院給定悼值進謎行比僅較的奶關(guān)鍵腳字個鏟數(shù)恰解為該躍結(jié)點膽在判傘定樹勇上的柏層次逃數(shù)。折半配查找執(zhí)查找攝失敗蓋的過勸程,就是猾走了填一條咳從根摟結(jié)點額到外義部結(jié)紋點的鍋路徑,和豬給定旋值進話行比鼻較的誕關(guān)鍵品字個年數(shù)等纖于該路錄徑上法內(nèi)部仿結(jié)點背個數(shù)。因此借,折冊半查孝找法候在查鴿找成親功時辭進行辜比較及的關(guān)邁鍵字攪個數(shù)最扛多不略超過功樹的廈深度扒,吧在查慣找不很成功撐時和給定滅值進怨行比父較的譽關(guān)鍵網(wǎng)字個什數(shù)最熄多也浪不超陳過折半榜查找部的AS濱L假設(shè)批有序洲表的著長度饞為n=哲2h-1,則描爸述折濱半查綱找的類判定赤樹是至深度浸為h的滿夜二叉嶼樹。該樹像中層頑次為1的結(jié)下點有1個,聾層次宵為2的結(jié)途點有2個,…,層別次為h的結(jié)佳點有2h-誦1個。假設(shè)撒有序攪表中芝每個爬記錄茄的查季找概清率相境等(Pi=泛1/匯n)。折半階查找汁的優(yōu)茂缺點優(yōu)點底:效毅率比焦順序蒙查找賄高;缺點沾:只際適用暴于有稀序表坡,且詞限于往順序撤存儲度結(jié)構(gòu)緒,對縫線性梢鏈表揀無法噸進行怪折半驢查找轉(zhuǎn)。9.網(wǎng)1.出3靜態(tài)相樹表竟的查韻找當有劣序表棗中各鍵記錄齡的查農(nóng)找概華率不鑄相等爪時,油單純趁的折長半查她找的芒效率匙并不侄是最期高的構(gòu)造營一個拜靜態(tài)聚最優(yōu)平查找擠樹,癢這樣室的二衫叉樹威的查頓找性扒能才執(zhí)是最是佳的9.雄1.驅(qū)4索引亦順序反表的齊查找查找醬表——以索引憑順序底表表示券靜態(tài)彩查找榴表,曲則Se授ar阿ch函數(shù)友用分塊像查找來實醬現(xiàn)。器因此條,分螺塊查鹽找又舌稱索引料順序揪查找,是樣順序趴查找灘的一叉種改駁進。53864974586048243844423320981312221817161514131211109876543211221378648索引訊表最大媽關(guān)鍵杰字起始柱地址索引輕表按夢關(guān)鍵熟字有蒼序,則吊表或芳者有泛序,錄或者增分塊印有序信。分塊甜查找(索引悼順序廳表查丈找)分塊梳查找國的步捆驟分最為兩測步:愉先確蜓定待概查記港錄所梢在的規(guī)塊(貢子表膀);心然后截在塊刷中順墳序查講找。例子畝,在建上述難索引詢順序也表中碰查找38和39。53864974586048243844423320981312221817161514131211109876543211221378648注意媽:由拋于索與引項脹組成內(nèi)的索理引表誤按關(guān)政鍵字騾有序千,則確定祝塊的損查找賠可以御用順嘗序查骨找,炎也可闊以用投折半冬查找;而咳塊中氏的記娘錄排唯列是魯任意專的,涉則在塊中胡只能渠是順型序查話找。分塊查塊找的抗平均斧查找蔥長度分塊凝查找背的平終均查仁找長敗度為AS間Lbs=渾Lb+Lw其中系:Lb為查找索引礙表確定專所在申塊的術(shù)平均剝查找默長度虛,Lw為在塊蹦中查找脈元素攜的平喇均查補找長趟度。分塊汁查找料的平餃均查倆找長毯度若采牙用順序液查找肝塊,則雁分塊顫查找鳴的平蹈均查每找長櫻度為老:其中,n為表長,均勻分為b塊,每塊含有s個記錄,即b=若采骨用折半歲查找后塊,則旦分塊幟查找褲的平接均查罰找長西度為揚:順序查找塊的平均查找長度不僅和表長n有關(guān),而且和每一塊中的記錄個數(shù)s有關(guān)。可見為了提高查找效率,在n確定的情況下,應(yīng)該選擇合適的s。容易證明,當s取時,ASLbs取最小值9.莫2動態(tài)享查找翼表動態(tài)表查找毒表的AD串T動態(tài)棍查找陳表的社特點萍是,表結(jié)絲式構(gòu)本賞身是早在查為找過策程中案動態(tài)國生成掏的。即抱,對么于給尖定值ke寒y,若表孩中存慎在其包關(guān)鍵籃字等揭于ke外y的記撐錄,性則查沾找成派功返腳回;否則踢,插軟入關(guān)鍵預(yù)字等扣于ke恒y的記簡錄。P22既6:Se稻ar顛ch浩DS行Ta略bl時e(搜DT,ke微y咐);In煤se筍rt穿DS弊Ta紋bl尤e(饅&D欠T,e賴);De爐le津te嬸DS富Ta澡bl賢e(懼&D必T,描e伙);9.倒2.畏1二叉?zhèn)渑判蛑笜洳檎彝け怼鎱^(qū)排序寒樹二叉殲排序篩樹(B囑in貍ar檔y坑So章rt采T謀re踢e)或者陵是一惡棵空蘆樹;爐或者舌是具父有下低列性脹質(zhì)的喘二叉狼樹:袖(1察)若它汽的左烏子樹國不空箏,則桐左子枕樹上復(fù)所有捎結(jié)點宏的值偽均小于它的肯根結(jié)陣點的帳值;(2動)若它裙的右金子樹拿不空伸,則直右子現(xiàn)樹上雹所有幟結(jié)點赤的值租均大于它的逝根結(jié)傅點的蓋值;(3更)它的政左、傲右子喜樹也兇分別莖為二雪叉排怠序樹折。351545504025102030二叉橡排序斤樹的份查找抗過程當二叉裳排序析樹不墊空時脈,首低先將娘給定畢值和根結(jié)烈點的關(guān)揀鍵字香比較殿,若目相等檢,則蹲查找渠成功單;否托則將魯依據(jù)揉給定漠值和烏根結(jié)字點的倒關(guān)鍵逗字之軋間的茫大小駐關(guān)系斷,分它別在爸左子陽樹或議右子節(jié)樹上師繼續(xù)勞進行磁查找榴。BiTreeSearchBST(BiTreeT,KeyTypekey){

//在根指針為T所指的二叉排序樹中遞歸的查找某個關(guān)鍵字等于key的

//數(shù)據(jù)元素;若查找成功,則返回指向該數(shù)據(jù)元素結(jié)點的指針,否則返

//回空指針。

if((!T)||EQ(key,T->data))return(T);//查找結(jié)束,成功,失敗

elseifLT(key,T->data.key)return(SearchBST(T->lchild,key);

elsereturn(SearchBST(T->rchild,key));

}算法9.5(a)在下役列二羨叉排薄序中蘋查找跪關(guān)鍵飄字等爬于10疊0的記翠錄在下移列二朝叉排疏序中陶查找甘關(guān)鍵呆字等斥于40的記白錄45125333710024615312?二叉暑排序挎樹的刺插入二叉速排序乘樹是塌一種動態(tài)五查找剝表,其澇特點此在于表結(jié)給構(gòu)本環(huán)身是宵在查慮找過涉程中耽動態(tài)絕生成界的。當撓樹中疤不存炸在關(guān)徐鍵字疑等于某給定幕值的猴結(jié)點揮時再胡進行回插入廉。新插季入的老結(jié)點輝一定百是一融個新售添加壓的葉子百結(jié)點,并納且是查找標不成君功時暫查找怖路徑上訪殺問的杰最后覆一個宣結(jié)點醒的左牌孩子峽或右圖孩子雕結(jié)點。算法9.壁5(雀b)玻:在根膀指針訊為T所指劇的二街叉排遇序樹魚中遞歸的查應(yīng)找某構(gòu)個關(guān)卡鍵字脹等于ke陡y的數(shù)躲據(jù)元原素。脖若查破找成片功,辣則指袋針p指向收該數(shù)算據(jù)元茶素結(jié)玻點,缸并返億回TR飄UE;否則域,指結(jié)針p指向京查找吩路徑靠上訪遇問的填最后漫一個朱結(jié)點澆,并究返回FA襯LS紛E。算法9.逼6:當二乒叉樹T中不嫂存在槍關(guān)鍵堡字等旺于e.賀ke干y的數(shù)順據(jù)元雙素時炒,插固入e并返百回TR穗UE,否則謙返回FA崇LS綠E。待查土找的勞關(guān)鍵剩字序咬列為{4博5,亞2蹲4,舉5珍3,挑4歪5,厭1享2,吃2償4,換9培0濾}454524452453452453124524531290注意吳:中序攀遍歷紛二叉眠排序恭樹可捕以得夕到一夕個關(guān)搞鍵字召的有旬序序掉列。一個之無序巡壽的序腰列可希以通改過構(gòu)揚造一兔棵二裹叉排育序樹慮而變劫成一凝個有康序序絨列,構(gòu)

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論