版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)查找數(shù)據(jù)結(jié)構(gòu)查找1優(yōu)選數(shù)據(jù)結(jié)構(gòu)查找Ppt優(yōu)選數(shù)據(jù)結(jié)構(gòu)查找Ppt2術(shù)語:查找(檢索)——根據(jù)給定的某個值,在表中確定一個關(guān)鍵字等于給定值的記錄或數(shù)據(jù)元素關(guān)鍵字——是記錄某個數(shù)據(jù)項(xiàng)的值,它可以唯一標(biāo)識一個記錄。次關(guān)鍵字——不能唯一的確定一個記錄,但能確定表的一個子表。子表的元素個數(shù)應(yīng)遠(yuǎn)少于表中元素?cái)?shù)。為簡化問題,將表中元素看成簡單的整型數(shù)據(jù),理解為關(guān)鍵字部分。術(shù)語:38.1靜態(tài)查找表
1、順序表的順序查找
應(yīng)用范圍:順序表或線性鏈表表示的表,表內(nèi)元素之間無序。查找過程:從表的一端開始逐個進(jìn)行記錄的關(guān)鍵字和給定值的比較。
search(st,key,n)//在有n個數(shù)據(jù)的表st中找key{i=n-1;while(i>=0&&st[i]!=key)i--;if(i<0)return-1;//查找不成功返回-1
elsereturni;//查找成功返回下標(biāo)號}算法主要時(shí)間在循環(huán),為減少判定,n個數(shù)據(jù)用容量為n+1的一維數(shù)組表示。st[1]到st[n]存儲數(shù)據(jù),st[0]作為監(jiān)視哨
search1(st,key,n){st[0]=key;i=n;while(st[i]!=key)i--;returni;//查找返回序號,0為不成功}8.1靜態(tài)查找表1、順序表的順序查找應(yīng)用范4順序查找的平均時(shí)間為表長的一半。2、順序有序表的查找———二分(折半)查找查找過程:每次將待查記錄所在區(qū)間縮小一半適用條件:采用順序存儲結(jié)構(gòu)的有序表算法實(shí)現(xiàn)設(shè)表長為n,low、high和mid分別指向待查元素所在區(qū)間的上界、下界和中點(diǎn),k為給定的待查值初始時(shí),令low=1,high=n,mid=(low+high)/2讓k與mid指向的記錄比較:若k=r[mid],查找成功,結(jié)束若k<r[mid],則high=mid-1若k>r[mid],則low=mid+1重復(fù)上述操作,直至low>high時(shí),查找失敗highmidlow順序查找的平均時(shí)間為表長的一半。2、順序有序表的查找———5bin_search(st[],key,n){low=0;high=n-1;while(low<=high){mid=(low+high)/2;
if(st[mid]==key)returnmid;elseif(st[mid]>key)high=mid-1;elselow=mid+1;}return-1;}mid=(low+high)>>1;遞歸:bin_search(st[],key,l,h){if(l<=h){mid=(l+h)>>1;if(st[mid]==key)returnmid;elseif(st[mid]>key)returnbin_search(st,key,l,mid-1);elsereturnbin_search(st,key,mid+1,h)}elsereturn-1;}平均查找時(shí)間bin_search(st[],key,n)mid=(low63、分塊查找數(shù)據(jù)組織:將表分成幾塊,塊內(nèi)無序,塊間有序;先確定待查記錄所在塊,再在塊內(nèi)查找(1)用數(shù)組存放待查記錄,(2)建立索引表,由每塊中最大(小)的關(guān)鍵字及所屬塊位置的信息組成。3、分塊查找數(shù)據(jù)組織:712345678910111213141516171822121389203342443824486058745786532248861713索引表查38當(dāng)索引表較大時(shí),可以采用二分查找在數(shù)據(jù)量極大時(shí),索引可能很多,可考慮建立索引表的索引,即二級索引,原則上索引不超過三級12345678分塊查找方法評價(jià)由上面的公式,在n一定時(shí),可以通過選擇s使ASL盡可能小可以證明,當(dāng)時(shí),對于(1)ASL最小。分塊查找方法評價(jià)由上面的公式,在n一定時(shí),可以通過選擇s使A9小結(jié):時(shí)間:順序查找最差,二分最好,分塊介于兩者之間空間:分塊最大,需要增加索引數(shù)據(jù)的空間特點(diǎn):1)順序查找對表沒有特殊要求2)分塊時(shí)數(shù)據(jù)塊之間在物理上可不連續(xù)。所以可以達(dá)到插入、刪除數(shù)據(jù)只涉及對應(yīng)的塊;另外,增加了索引的維護(hù)。3)二分查找要求表有序,所以若表的元素的插入與刪除很頻繁,維持表有序的工作量極大。4)在表不大時(shí),一般直接使用順序查找。小結(jié):10二分查找的C/C++接口stdlib.hvoid*bsearch(void*key,void*base,intnelement,intsize,int(*fcmp)(constvoid*,constvoid*))其中:fcmp規(guī)定:第一個數(shù)據(jù)小于第二個,返回小于0的數(shù)第一個數(shù)據(jù)等于第二個,返回0第一個數(shù)據(jù)大于第二個,返回大于0的數(shù)二分查找的C/C++接口stdlib.h11#include<iostream.h>#include<stdlib.h>cmp(constvoid*a,constvoid*b){ if(*(int*)a<*(int*)b)return-1; elseif(*(int*)a==*(int*)b)return0; elsereturn1;}voidmain(){ intar[]={-2,3,6,9,10,21,22,34,56}; int*p; intt; t=9; p=(int*)bsearch(&t,ar,sizeof(ar)/sizeof(int),sizeof(int),cmp); if(p!=NULL)cout<<*p<<endl;}#include<iostream.h>128.2動態(tài)查找8.2.1二叉排序樹和二叉平衡樹一、二叉排序樹1
二叉排序樹定義
二叉排序樹(BinarySortTree)或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹:(1)若左子樹不空,則左子樹中所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;(2)若右子樹不空,則右子樹中所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;(3)左、右子樹也分別為二叉排序樹;8.2動態(tài)查找8.2.1二叉排序樹和二叉平衡樹1135.2技術(shù)人員、(設(shè)備)維修人員、各加氣站負(fù)責(zé)人的安全考核:定期檢測——顧客服務(wù)的總體檢2、修改資料:從基礎(chǔ)資料列表中選擇一個準(zhǔn)備修改的基礎(chǔ)資料,然后修改其中需修改的部分,單擊【保存】按鈕將新修改的基礎(chǔ)資料存入數(shù)據(jù)庫中。具體的技巧有以下幾條:競爭性磋商響應(yīng)人遞交響應(yīng)文件前,應(yīng)提交規(guī)定數(shù)額的磋商保證金,保證金金額為人民幣40000元(肆萬元);磋商保證金遞交截止時(shí)間為2016年5月16日下午3:00。動態(tài)服務(wù)的美姿美儀臺灣銀行性質(zhì)屬于公營銀行,有7200多名員工。為了提高競爭力,臺灣銀行決定改制成股份制。那么,如何幫助這個企業(yè)進(jìn)行培訓(xùn)咨詢呢?在整個培訓(xùn)流程中,首先要讓經(jīng)理接受相應(yīng)的觀念,讓經(jīng)理痛下決心,在所有的市場、所有的支庫和支行都要做好自己的服務(wù);支行的經(jīng)理形成這樣的觀點(diǎn)后,再進(jìn)行行銷師資的培訓(xùn),接受這一級別培訓(xùn)的約有四五十人,最后再對全體普通員工進(jìn)行培訓(xùn),這樣就自上而下地逐漸建立了服務(wù)觀念。4.7.2本單位的安全生產(chǎn)狀況和規(guī)章制度,作業(yè)場所和工作崗位的安全因素及事故應(yīng)急措施,事故案例;1、經(jīng)審批合格,交清管理保證金,在管理處辦理臨時(shí)施工證方可開工。4.7新從業(yè)人員的安全生產(chǎn)培訓(xùn)內(nèi)容:3.取還信用卡的服務(wù)禮儀45372453100619078312根據(jù)二叉排序樹的定義,對二叉樹進(jìn)行LDR遍歷得到是遞增序列。5.2技術(shù)人員、(設(shè)備)維修人員、各加氣站負(fù)責(zé)人的安全考核:142、查找:步驟:若根結(jié)點(diǎn)的關(guān)鍵字值等于查找的關(guān)鍵字,成功。否則,若小于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查左子樹。若大于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查右子樹。若子樹為空,查找不成功。12225030011020099105230216
TreeNode*SearchBST(t,key)/*在二叉分類樹查找關(guān)鍵字之值為key的結(jié)點(diǎn),找到返回該結(jié)點(diǎn)的地址,否則返回空。t為二叉分類樹的根結(jié)點(diǎn)的指針。*/{if(t==NULL||key==t->data)returnt;elseif(key<t->data)returnSearchBST(t->lchild,key);elsereturnSearchBST(t->rchild,key);}//SearchBST2、查找:1222503001102009910523021153、插入算法:首先執(zhí)行查找算法,找出被插結(jié)點(diǎn)的父親結(jié)點(diǎn)。判斷被插結(jié)點(diǎn)是其父親結(jié)點(diǎn)的左、右兒子。將被插結(jié)點(diǎn)作為葉子結(jié)點(diǎn)插入。若二叉樹為空。則首先單獨(dú)生成根結(jié)點(diǎn)。注意:新插入的結(jié)點(diǎn)總是葉子結(jié)點(diǎn)。例:將序列:122、99、250、110、300、280作為二叉排序樹的結(jié)點(diǎn)的關(guān)鍵字值,生成二叉排序樹。122992503002801103、插入算法:例:將序列:122、99、250、110、3016voidInsertBST(*&t,key)//在二叉排序樹中插入查找關(guān)鍵字key{if(t==NULL){t=newBiTree;t->lchild=t->rchild=NULL;t->data=key;return;}if(key<t->data)InsertBST(t->lchild,key);elseInsertBST(t->rchild,key);}voidCreateBiTree(tree,d[],n)//n個數(shù)據(jù)在數(shù)組d中,tree為二叉排序樹根{tree=NULL;for(i=0;i<n;i++)InsertBST(tree,d[i]);}類C程序?qū)崿F(xiàn):voidInsertBST(*&t,key)類C程序?qū)崿F(xiàn)174.二叉排序樹中一個結(jié)點(diǎn)的刪除在二叉排序樹中刪除結(jié)點(diǎn)的原則是:刪除結(jié)點(diǎn)后仍是二叉排序樹。設(shè)在二叉排序樹被刪除結(jié)點(diǎn)是x,其雙親結(jié)點(diǎn)為f。情況討論:(1)x為葉子結(jié)點(diǎn),則直接刪除(2)x只有左子樹xL或只有右子樹xR,則令xL或xR直接成為雙親結(jié)點(diǎn)f的子樹;ffxxLfxxRf4.二叉排序樹中一個結(jié)點(diǎn)的刪除設(shè)在二叉排序樹被刪除結(jié)點(diǎn)18(3)x即有左子樹xL也有右子樹xRfxxRxL在xL中選值最大的代替x,該數(shù)據(jù)按二叉排序樹的性質(zhì)應(yīng)在最右邊。qfxxRcscLqLsLfsxRcqcLqLsL(3)x即有左子樹xL也有右子樹xRfxxRxL在xL中選19二叉排序樹的刪除操作例子
葉子結(jié)點(diǎn):直接刪除。如:刪除數(shù)據(jù)為15、70的結(jié)點(diǎn)。15607030205060302050二叉排序樹的刪除操作例子葉子結(jié)點(diǎn):直接刪除。如:刪除數(shù)據(jù)為2012225030011020099105230216400450500若被刪結(jié)點(diǎn)的左兒子為空或者右兒子為空。如下圖所示,刪除結(jié)點(diǎn)的數(shù)據(jù)場為200的結(jié)點(diǎn)。刪除2001222503002302164004505001109910512225030011020099105230216400421被刪結(jié)點(diǎn)的左、右子樹皆不空1222503001102009910523021640045050011025030010520099230216400450500被刪結(jié)點(diǎn)的左、右子樹皆不空1222503001102009922voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}voiddelete(*&p)23voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}pqvoiddelete(*&p)pq24voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}pqvoiddelete(*&p)pq253.百貨公司:一般客戶VS貴賓會員②各縣、區(qū)負(fù)責(zé)人與市場部簽定協(xié)議,協(xié)議除其他條款外,要針對貨、款一項(xiàng),由負(fù)責(zé)人對貨、款承擔(dān)安全責(zé)任。以家庭財(cái)產(chǎn)擔(dān)保。走路姿勢是動態(tài)服務(wù)過程中重要的服務(wù)技巧之一。行走時(shí)腳尖應(yīng)向著正前方,腳跟先落地,腳掌緊跟落地。走路時(shí)要收腹挺胸,兩臂自然擺動,節(jié)奏快慢適當(dāng),展現(xiàn)出一種矯健輕快、從容不迫的動態(tài)美。1、構(gòu)筑物維護(hù)10.4在質(zhì)量保證期內(nèi),由于維修、更換有缺陷或損壞的貨物或部件,其保證期將延長,延長時(shí)間等于停機(jī)時(shí)間。1、“招標(biāo)人”系指陽谷縣中醫(yī)院。____________________________________________________________1.8熟知消防設(shè)備性能和使用方法。站內(nèi)動用明火作業(yè)須按規(guī)定辦理動火手續(xù),并制定嚴(yán)密的防范措施。服務(wù)人員和顧客之間是一種互動溝通?!扮R子原理”說明了顧客與服務(wù)人員之間的互動關(guān)系:你對鏡子笑,鏡中人就會笑;你對鏡子哭,鏡中人就會哭;你伸手打人,他也伸手打人。因此,當(dāng)顧客出現(xiàn)不禮貌的言行時(shí),服務(wù)人員必須忍耐,否則雙方爭執(zhí)不下,只會加重惡化事態(tài)。如果表現(xiàn)得非常理性、禮讓有加,顧客就會平心靜氣,事態(tài)也會發(fā)生轉(zhuǎn)變。4.4做好維護(hù)保養(yǎng)工作,防止腐蝕,定期送檢。5、設(shè)備與構(gòu)筑物改良改善資料;4.4協(xié)助站長、班長,做好站內(nèi)的日常管理工作。voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}pq3.百貨公司:一般客戶VS貴賓會員voiddelete(26voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}pqvoiddelete(*&p)pq27voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}pqsvoiddelete(*&p)pqs28voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}psqvoiddelete(*&p)psq29voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}psdqvoiddelete(*&p)psdq30voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}dpsdqvoiddelete(*&p)dpsdq31voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}dpsdqvoiddelete(*&p)dpsdq32voiddelete(*&p){if(p->rchild==NULL){q=p;p=p->lchild;deleteq;}elseif(p->lchild==NULL){q=p;p=p->rchild;deleteq;}else{q=p;s=p->lchild;while(s->rchild!=NULL){q=s;s=s->rchild;}p->data=s->data;if(q!=p)q->rchild=s->lchild;elseq->lchild=s->lchild;}deletes;}p等于q的情況spxqsxqpvoiddelete(*&p)p等于q的情況spxqsx33刪除一個結(jié)點(diǎn):DeleteBST(*&t,key)//在根為t的排序二叉樹中刪去值為key的結(jié)點(diǎn){
if(!t)returnelseif(t->data==key){delete(t);elseif(t->data>key)DeleteBST(t->lchild,key);elseDeleteBST(t->rchild,key);}刪除一個結(jié)點(diǎn):34DABCFEG二、平衡二叉樹
起因:提高查找速度,避免最壞情況出現(xiàn)。如下圖單枝情況的出現(xiàn)。
平衡因子(平衡度):結(jié)點(diǎn)的平衡因子是結(jié)點(diǎn)的左子樹的高度減去右子樹的高度。(或反之定義)平衡二叉樹:每個結(jié)點(diǎn)的平衡因子都為1、-1、0的二叉排序樹?;蛘哒f每個結(jié)點(diǎn)的左右子樹的高度最多差1的二叉排序樹。1、概念與定義DABCFEG二、平衡二叉樹起因:提高查找速度,避免最壞情35例:014125392863536050171873011-1-1-100000000平衡二叉樹028181453963536050173012-1-100001-1非平衡二叉樹0例:014125392863536050171873011-36
2、平衡樹的平衡方法:在左圖所示的平衡樹中插入數(shù)據(jù)為2的結(jié)點(diǎn)。插入之后仍應(yīng)保持平衡分類二叉樹的性質(zhì)不變。14125392863536050171873011-1-1-100000000平衡樹1412539286353605017187301-1-1-1000000002112原平衡度為0不平衡點(diǎn)解決:如何用最簡單、最有效的辦法保持平衡分類二叉樹的性質(zhì)22、平衡樹的平衡方法:14125392863536050137141253928635360501718730+1+1-1-1-1000000002112原平衡度為0不平衡點(diǎn)Adelson解決思路:不涉及到不平衡點(diǎn)的雙親,即以不平衡點(diǎn)為根的子樹的高度應(yīng)保持不變。新結(jié)點(diǎn)插入后,向根回溯找到第一個原平衡因子不為0的結(jié)點(diǎn)(如圖中9)。新插入的結(jié)點(diǎn)和第一個平衡因子不為0的結(jié)點(diǎn)之間的結(jié)點(diǎn),其平衡因子原皆為0在調(diào)整中,僅涉及前面所提到的最小子樹(如:以9為根的子樹)仍應(yīng)保持排序二叉樹的性質(zhì)不變。141253928635360501718730+1+1-138⑦各縣區(qū)負(fù)責(zé)人、市場部要對各銷售點(diǎn),中心藥店加強(qiáng)銷售情況檢查,對銷售不佳的,要及時(shí)向市場部匯報(bào),采取措施,減小周轉(zhuǎn)量或取消此點(diǎn),另設(shè)銷售點(diǎn)。否則,一切責(zé)任,后果由縣區(qū)負(fù)責(zé)人負(fù)責(zé)。2.1統(tǒng)計(jì)工作過程一般分為統(tǒng)計(jì)設(shè)計(jì)、統(tǒng)計(jì)調(diào)查、統(tǒng)計(jì)整理、統(tǒng)計(jì)分析與統(tǒng)計(jì)資料的開發(fā)利用五個相關(guān)階段;2.5制定主要容器的維護(hù)檢修規(guī)程和容器改造、檢驗(yàn)、修理及報(bào)廢等技術(shù)審查工作。1、對憑證進(jìn)行處理的功能:包括登記記帳憑證、編制記帳憑證;企業(yè)應(yīng)該設(shè)計(jì)一些在工作中常用的修辭,并對修辭進(jìn)行標(biāo)準(zhǔn)化。例如有電話打進(jìn)來,接電話的人員會說“您好,××公司,我姓……很高興為您服務(wù)”等等。有的公司服務(wù)把這種服務(wù)規(guī)范化、標(biāo)準(zhǔn)化。例如對方找公司的主管,但是主管不在,公司針對這種情況設(shè)計(jì)了標(biāo)準(zhǔn)的應(yīng)答;或者是對方的要求本公司無法做到,也設(shè)計(jì)出標(biāo)準(zhǔn)的回答。修辭的標(biāo)準(zhǔn)化,是互動的對應(yīng)技巧。設(shè)計(jì)要符合公司的特色,與公司的業(yè)務(wù)形象、服務(wù)的質(zhì)量要求緊密相連。這樣客戶會覺得很滿意,對公司有良好的印象。23.履約保證金2、 驗(yàn)收合格憑驗(yàn)收單及收款收據(jù)退還押金。4.2.4傷亡事故和職業(yè)病統(tǒng)計(jì)、報(bào)告及調(diào)查處理的方法;(4)劃分營銷區(qū)域,固定宣傳銷售點(diǎn),有以下優(yōu)點(diǎn):①增加可信度;服務(wù)的過程是顧客與服務(wù)人員之間產(chǎn)生互動的過程,如果缺少服務(wù)人員的參與,服務(wù)將難以展開。因此,加強(qiáng)對服務(wù)人才的培訓(xùn),是提高企業(yè)整體服務(wù)水平,促使顧客滿意的必要環(huán)節(jié)。3、平衡種類分析
左調(diào)整(新結(jié)點(diǎn)插入在左子樹上的調(diào)整):1、LL情況:(插入在結(jié)點(diǎn)左子樹的左子樹上)LL旋轉(zhuǎn)旋轉(zhuǎn)前后:高度都為h+11h-10AB1h-12hh-1BRARBLBA0h0h-1h-1BRARBL⑦各縣區(qū)負(fù)責(zé)人、市場部要對各銷售點(diǎn),中心藥店加強(qiáng)銷售情況檢查39旋轉(zhuǎn)算法voidLL_rotate(BBSTNode*a){BBSTNode*b;b=a->Lchild;a->Lchild=b->Rchild;b->Rchild=a;a->Bfactor=b->Bfactor=0;a=b;}旋轉(zhuǎn)算法402、LR情況:(新插入結(jié)點(diǎn)在左子樹的右子樹上)h-1旋轉(zhuǎn)前后高度仍然是h+1h-1CB0h-1BLARACRh-2CLh-1-10BLAB1h-102-1ARARCCRCLh-2h-101LR旋轉(zhuǎn)2、LR情況:(新插入結(jié)點(diǎn)在左子樹的右子樹上)h-1旋轉(zhuǎn)前41旋轉(zhuǎn)算法voidLR_rotate(BBSTNode*a){BBSTNode*b,*c;b=a->Lchild;c=b->Rchild;/*初始化*/a->Lchild=c->Rchild;b->Rchild=c->Lchild;c->Lchild=b;c->Rchild=a;if(c->Bfactor==1){a->Bfactor=-1;b->Bfactor=0;}elseif(c->Bfactor==0)a->Bfactor=b->Bfactor=0;else{a->Bfactor=0;b->Bfactor=1;}}旋轉(zhuǎn)算法42
右調(diào)整(新結(jié)點(diǎn)插入在右子樹上進(jìn)行的調(diào)整)1、RR情況:(插入在的右子樹的右子樹上)處理方法和LL對稱2、RL情況:(插入在右子樹的左子樹上)處理方法與LR對稱平衡樹建立方法:(1)按二叉排序樹插入結(jié)點(diǎn)(2)如引起結(jié)點(diǎn)平衡因子變?yōu)閨2|,則確定旋轉(zhuǎn)點(diǎn),該點(diǎn)是離根最遠(yuǎn)(或最接近于葉子的點(diǎn))(3)確定平衡類型后進(jìn)行平衡處理,平衡后以平衡點(diǎn)為根的子樹高不變右調(diào)整(新結(jié)點(diǎn)插入在右子樹上進(jìn)行的調(diào)整)平衡樹建立方法:43589162127431011二叉排序樹589162127431011二叉排序樹44二叉平衡樹811122371095614二叉平衡樹81112237109561445采用B_樹和B+
樹目的應(yīng)文件系統(tǒng)的要求而發(fā)展起來的,大量數(shù)據(jù)存放在外存中,通常存放在硬盤中。由于是海量數(shù)據(jù),不可能一次調(diào)入內(nèi)存。因此,要多次訪問外存。但硬盤的驅(qū)動受機(jī)械運(yùn)動的制約,速度慢。所以,主要矛盾變?yōu)闇p少訪外存次數(shù)。在1972年由R.Bayer和E.Macreight提出用B_樹作為索引組織文件。提高訪問速度、減少時(shí)間。 B_樹和B+樹一、B_樹及其操作采用B_樹和B+樹目的B_樹和B+樹一、B_樹及其操作461、m階B_樹定義:m階B_樹滿足或空,或?yàn)闈M足下列性質(zhì)的m叉樹:(1)樹中每個結(jié)點(diǎn)最多有m棵子樹(2)根結(jié)點(diǎn)在不是葉子時(shí),至少有兩棵子樹(3)除根外,所有非終端結(jié)點(diǎn)至少有m/2棵子樹(4)有s個子樹的非葉結(jié)點(diǎn)具有n=s-1個關(guān)鍵字,結(jié)點(diǎn)的信息組織為:(n,A0,K1,A1,K2,A2
…Kn,An)
這里:n:關(guān)鍵字的個數(shù),ki(i=1,2,…,n)為關(guān)鍵字,且滿足Ki<Ki+1,,Ai(i=0,1,..n)為指向子樹的指針。(5)所有的葉子結(jié)點(diǎn)都出現(xiàn)在同一層上,不帶信息(可認(rèn)為外部結(jié)點(diǎn)或失敗結(jié)點(diǎn))。1、m階B_樹定義:47例:4階B_樹。除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)之外,每個結(jié)點(diǎn)的子樹個數(shù)至少為m/2=2個;結(jié)點(diǎn)的關(guān)鍵字個數(shù)至少為1。該B_樹的深度為4。葉子結(jié)點(diǎn)都在第4層上。藍(lán)色代表結(jié)點(diǎn)中關(guān)鍵字個數(shù)黑色代表結(jié)點(diǎn)中關(guān)鍵字第1層第2層第3層第4層133118243781111271391993475864FFFFFFFFFFFF例:4階B_樹。除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)之外,每個結(jié)點(diǎn)的子樹個數(shù)483、B_樹的查找:查找過程,類似于二叉樹的查找,關(guān)鍵字為key的記錄。從根開始在結(jié)點(diǎn)中順序或二分(當(dāng)m較大時(shí))查找,如果Ki=key則查找成功,
若Ki<key<Ki+1:順Ai指向的子樹重復(fù)查找若key<K1:順A0指向的子樹重復(fù)查找若key>Kn;:找順An指向的子樹重復(fù)查找若找到葉子,則查找失敗。3、B_樹的查找:494、B_樹中結(jié)點(diǎn)的插入
m代表B_樹的階,插入總發(fā)生在最低層1)插入后關(guān)鍵字個數(shù)小于等于m-1,完成。2)插入后關(guān)鍵字個數(shù)等于m,結(jié)點(diǎn)分裂,以中點(diǎn)數(shù)據(jù)為界一分為二,中點(diǎn)數(shù)據(jù)放到雙親結(jié)點(diǎn)中。這樣就有可能使得雙親結(jié)點(diǎn)的數(shù)據(jù)個數(shù)為m,引起雙親結(jié)點(diǎn)的分裂,最壞情況下一直波及到根,引起根的分裂——B_樹長高。
122430457053902610039506185例:3階B_樹的插入操作。最多3棵子樹,2個數(shù)據(jù);最少2棵子樹,1個數(shù)據(jù)。所以3階B_樹也稱為2-3樹。插入位置插入數(shù)據(jù):334、B_樹中結(jié)點(diǎn)的插入2)插入后關(guān)鍵字個數(shù)等于m,結(jié)點(diǎn)5031224304570539026100395061857243034570539026100395061851230324457053902610039506185127100303245390263950618512745707插入7312243045705390261003515、B_樹中結(jié)點(diǎn)的刪除*刪除發(fā)生在最底層(1)被刪關(guān)鍵字所在結(jié)點(diǎn)中的關(guān)鍵字?jǐn)?shù)目大于等于m/2,直接刪除。(2)刪除后結(jié)點(diǎn)中數(shù)據(jù)為m/2-2,而相鄰的左(右)兄弟中數(shù)據(jù)大于m/2-1,此時(shí)左(右兄弟)中最大(?。┑臄?shù)據(jù)上移到雙親中,雙親中接(靠)在它后(前)面的數(shù)據(jù)移到被刪數(shù)據(jù)的結(jié)點(diǎn)中。32445539037100506170被刪關(guān)鍵字3244561903710053705、B_樹中結(jié)點(diǎn)的刪除(2)刪除后結(jié)點(diǎn)中數(shù)據(jù)為m/252(3)其左右兄弟結(jié)點(diǎn)中數(shù)據(jù)都是m/2-1,此時(shí)和左(右)兄弟合并,合并時(shí)連同雙親中相關(guān)的關(guān)鍵字。此時(shí),雙親中少了一項(xiàng),因此又可能引起雙親的合并,最壞一直到根,使B-樹降低一層。324459010061703244590371006170刪除3732445901006170(3)其左右兄弟結(jié)點(diǎn)中數(shù)據(jù)都是m/2-1,此時(shí)和左53*刪除不在最底層在大于被刪數(shù)據(jù)中選最小的代替被刪數(shù)據(jù),按B_樹性質(zhì),其位置如下圖所示(x是要刪除的數(shù)據(jù))xy用于代替x的數(shù)據(jù)問題轉(zhuǎn)換成在最底層的刪除*刪除不在最底層xy用于代替x的數(shù)據(jù)問題轉(zhuǎn)換成在最底層的刪54作業(yè):試從空樹開始,畫出按以下次序向2-3樹中插入數(shù)據(jù)的建樹過程:20,30,50,52,60,68,70。如果以后刪除50和68,畫出每一步執(zhí)行后2-3樹的狀態(tài)。作業(yè):試從空樹開始,畫出按以下次序向2-3樹中插入數(shù)據(jù)55二、B+樹在實(shí)際的文件系統(tǒng)中,用的是B+樹或其變形。有關(guān)性質(zhì)與操作類似與B_樹。1、差異:(1)有n棵子樹的結(jié)點(diǎn)中有n個關(guān)鍵字(2)所有葉子結(jié)點(diǎn)中包含全部關(guān)鍵字信息及對應(yīng)記錄位置信息(3)所有非葉子為索引,只含關(guān)鍵字而且僅有子樹中最大或最小的信息。(4)非葉最底層順序聯(lián)結(jié),這樣可以進(jìn)行順序查找二、B+樹在實(shí)際的文件系統(tǒng)中,用的是B+樹或其5659971544591015010203060910對應(yīng)01的記錄59971544572.查找過程※在B+樹上,既可以進(jìn)行縮小范圍的查找,也可以進(jìn)行順序查找;※在進(jìn)行縮小范圍的查找時(shí),不管成功與否,都必須查到葉子結(jié)點(diǎn)才能結(jié)束;※若在結(jié)點(diǎn)內(nèi)查找時(shí),給定值≤Ki,則應(yīng)繼續(xù)在Ai所指子樹中進(jìn)行查找3.插入和刪除的操作類似于B_樹進(jìn)行,即必要時(shí),也需要進(jìn)行結(jié)點(diǎn)的“分裂”或“合并”。2.查找過程3.插入和刪除的操作588.3哈希表前面查找方法共同特點(diǎn):通過將關(guān)鍵字值與給定值比較,來確定位置。效率取決比較次數(shù)。理想的方法是:不需要比較,根據(jù)給定值能直接定位記錄的存儲位置。這樣,需要在記錄的存儲位置與該記錄的關(guān)鍵字之間建立一種確定的對應(yīng)關(guān)系,使每個記錄的關(guān)鍵字與一個存儲位置相對應(yīng)。例1949-2000年某地區(qū)人口統(tǒng)計(jì)表可以按公式確定其人數(shù):y年人數(shù)=表[y-1948]年份人數(shù)123…..5152194919501951……...19992000200021002200……...440044208.3哈希表前面查找方法共同特點(diǎn):通過將關(guān)鍵字591.哈希(也稱為Hash、雜湊、散列)基本思想在記錄的存儲地址和它的關(guān)鍵字之間建立一個確定的對應(yīng)關(guān)系;這樣,不經(jīng)過比較,一次存取就能得到元素。哈希函數(shù)——在記錄的關(guān)鍵字與記錄的存儲位置之間建立的一種對應(yīng)關(guān)系。哈希函數(shù)是一種映象,是從關(guān)鍵字空間到存儲位置空間的一種映象。哈希函數(shù)可寫成:
addr(ai)=h(ki)ai是表中的一個元素addr(ai)是ai的存儲位置信息ki是ai的關(guān)鍵字1.哈希(也稱為Hash、雜湊、散列)基本思想60哈希表——應(yīng)用哈希函數(shù),由記錄的關(guān)鍵字確定記錄在表中的位置信息,并將記錄根據(jù)此信息放入表中,這樣構(gòu)成的表叫哈希表。哈希查找——利用哈希函數(shù)進(jìn)行查找的過程。除了特別簡單的應(yīng)用,在大多數(shù)情況下,所構(gòu)造出的哈希函數(shù)是多對一的(非單射函數(shù))。即可能有多個不同的關(guān)鍵字,它們對應(yīng)的哈希函數(shù)值是相同的,這意味著不同記錄由哈希函數(shù)確定的存儲位置是相同的。這種情況被稱為沖突。即:若key1不等于key2,而h(key1)=h(key2)
Hash查找適合于關(guān)鍵字可能出現(xiàn)的值的集合遠(yuǎn)遠(yuǎn)大于實(shí)際關(guān)鍵字集合的情形。根據(jù)抽屜原理,沖突是不可能完全避免的,所以,要解決:(1)構(gòu)造一個性能好,沖突少的Hash函數(shù)(2)如何解決沖突哈希表——應(yīng)用哈希函數(shù),由記錄的關(guān)鍵字確定記錄在表中的位置信612、常用的哈希函數(shù)(1)直接定址法構(gòu)造:取關(guān)鍵字或關(guān)鍵字的某個線性函數(shù)作哈希地址,即H(key)=key或H(key)=a·key+b特點(diǎn):
直接定址法所得地址集合與關(guān)鍵字集合大小相等,不會發(fā)生沖突實(shí)際中能用這種哈希函數(shù)的情況很少。此法僅適合于:地址集合的大小==關(guān)鍵字集合的大小2、常用的哈希函數(shù)(1)直接定址法此法僅適合于:62(2)數(shù)字分析法構(gòu)造:對關(guān)鍵字進(jìn)行分析,取關(guān)鍵字的若干位或其組合作哈希地址。
例有80個記錄,關(guān)鍵字為8位十進(jìn)制數(shù),哈希地址為2位十進(jìn)制數(shù)8134653281372242813874228130136781322817813389678136853781419355…..…..分析:只取8只取1只取3、4只取2、7、5數(shù)字分布近乎隨機(jī)所以:取任意兩位或兩位與另兩位的疊加作哈希地址(2)數(shù)字分析法例有80個記錄,關(guān)鍵字為8位十進(jìn)制數(shù),哈63此方法僅適合于:能預(yù)先估計(jì)出全體關(guān)鍵字的每一位上各種數(shù)字出現(xiàn)的頻度。(2)數(shù)字分析法構(gòu)造:對關(guān)鍵字進(jìn)行分析,取關(guān)鍵字的若干位或其組合作哈希地址。
此方法僅適合于:(2)數(shù)字分析法64以關(guān)鍵字的平方值的中間幾位作為存儲地址。求“關(guān)鍵字的平方值”的目的是“擴(kuò)大差別”,同時(shí)平方值的中間各位又能受到整個關(guān)鍵字中各位的影響。(3)平方取中法以關(guān)鍵字的平方值的中間幾位作為存儲地址。求“關(guān)鍵字的65(4)折疊法構(gòu)造:將關(guān)鍵字分割成位數(shù)相同的幾部分,然后取這幾部分的疊加和(舍去進(jìn)位)做哈希地址。種類移位疊加:將分割后的幾部分低位對齊相加間界疊加:從一端沿分割界來回折送,然后對齊相加。例關(guān)鍵字為:0442205864,哈希地址位數(shù)為4586442200410088H(key)=0088移位疊加58640224046092H(key)=6092間界疊加(4)折疊法例關(guān)鍵字為:0442205864,哈希地66
此方法適合于:關(guān)鍵字的數(shù)字位數(shù)特別多,且每一位上數(shù)字分布大致均勻情況。(4)折疊法構(gòu)造:將關(guān)鍵字分割成位數(shù)相同的幾部分,然后取這幾部分的疊加和(舍去進(jìn)位)做哈希地址。種類移位疊加:將分割后的幾部分低位對齊相加間界疊加:從一端沿分割界來回折送,然后對齊相加。此方法適合于:(4)折疊法67(5)除留余數(shù)法構(gòu)造:取關(guān)鍵字被某個不大于哈希表表長m的數(shù)p除后所得余數(shù)作哈希地址,即H(key)=key%p,pm特點(diǎn):簡單、常用,可與上述幾種方法結(jié)合使用p的選取很重要;p選的不好,容易產(chǎn)生同義詞(6)隨機(jī)數(shù)法構(gòu)造:取關(guān)鍵字的偽隨機(jī)函數(shù)值作哈希地址,即H(key)=random(key)適于關(guān)鍵字長度不等的情況說明:哈希函數(shù)構(gòu)造不應(yīng)太復(fù)雜不存在絕對好和壞的函數(shù)(5)除留余數(shù)法說明:683、沖突解決A)開放定址法方法:當(dāng)沖突發(fā)生時(shí),形成一個探查序列;沿此序列逐個地址探查,直到找到一個空位置(開放的地址),將發(fā)生沖突的記錄放到該地址中,即Hi=(H(key)+di)%m,i=1,2,……k(km-1)其中:H(key)——哈希函數(shù)
m——哈希表表長
di——增量序列分類線性探測再散列:di=1,2,3,……m-1二次探測再散列:di=12,-12,22,-22,32,……±k2(km/2)偽隨機(jī)探測再散列:di=偽隨機(jī)數(shù)序列3、沖突解決A)開放定址法69例已知一組關(guān)鍵字(19,14,23,1,68,20,84,27,55,11,10,79)哈希函數(shù)為:H(key)=key%13,哈希表長為m=16,
設(shè)每個記錄的查找概率相等用線性探測再散列處理沖突,即Hi=(H(key)+di)%mH(55)=3沖突->H1=(3+1)%16=4
沖突->H2=(3+2)%16=5H(79)=1沖突->H1=(1+1)%16=2
沖突->H2=(1+2)%16=3
沖突->H3=(1+3)%16=4
沖突->H4=(1+4)%16=5
沖突->H5=(1+5)%16=6
沖突->H6=(1+6)%16=7
沖突->H7=(1+7)%16=8
沖突->H8=(1+8)%16=9012345678910111213141514168275519208479231110H(19)=6H(14)=1H(23)=10H(1)=1沖突->H1=(1+1)%16=2H(68)=3H(20)=7H(84)=6沖突->H1=(6+1)%16=7
沖突->H2=(6+2)%16=8H(27)=1沖突->H1
=(1+1)%16=2
沖突->H2=(1+2)%16=3
沖突->H2=(1+3)%16=4H(11)=11H(10)=10沖突->H1=(10+1)%16=11
沖突->H2=(10+2)%16=12例已知一組關(guān)鍵字(19,14,23,1,68,20,70開放定址法的幾個問題1)刪除:只能作標(biāo)記,不能真正刪除2)溢出3)聚集問題12345678x開放定址法的幾個問題1x71線性探測法的特點(diǎn)◆
優(yōu)點(diǎn):只要散列表未滿,總能找到一個不沖突的散列地址;◆
缺點(diǎn):每個產(chǎn)生沖突的記錄被散列到離沖突最近的空地址上,從而又增加了更多的沖突機(jī)會(這種現(xiàn)象稱為沖突的“聚集”)。二次探測法增量序列為:di=12,-12,22,-22,32,……±k2(k?m/2?)線性探測法的特點(diǎn)72二次探測法的特點(diǎn)◆優(yōu)點(diǎn):探測序列跳躍式地散列到整個表中,不易產(chǎn)生沖突的“聚集”現(xiàn)象;◆缺點(diǎn):不能保證探測到散列表的所有地址。二次探測法的特點(diǎn)73⑶偽隨機(jī)探測法增量序列使用一個偽隨機(jī)函數(shù)來產(chǎn)生一個落在閉區(qū)間[1,m-1]的隨機(jī)序列。例2:表長為11的哈希表中已填有關(guān)鍵字為17,60,29的記錄,散列函數(shù)為H(key)=keyMOD11?,F(xiàn)有第4個記錄,其關(guān)鍵字為38,按三種處理沖突的方法,將它填入表中。(1)H(38)=38MOD11=5沖突
H1=(5+1)MOD11=6沖突
H2=(5+2)MOD11=7沖突
H3=(5+3)MOD11=8不沖突⑶偽隨機(jī)探測法74(2)H(38)=38MOD11=5沖突
H1=(5+12)MOD11=6沖突
H2=(5-12)MOD11=4不沖突(3)H(38)=38MOD11=5沖突設(shè)偽隨機(jī)數(shù)序列為9,則H1=(5+9)MOD11=3不沖突012345678910601729383838(2)H(38)=38MOD11=5沖突75B)
鏈地址法方法:將所有關(guān)鍵字為同義詞的記錄存儲在一個單鏈表中,并用一維數(shù)組存放頭指針。例:已知關(guān)鍵字(19,14,23,1,68,20,84,27,55,11,10,79)哈希函數(shù):
H(key)=key%13
用鏈地址法處理沖突20^11^0^12^38^9^104^5^671112^1479^12755^6884^1910^23B)鏈地址法例:已知關(guān)鍵字(19,14,23,1,676
建立公共溢出區(qū)方法:在基本散列表之外,另外設(shè)立一個溢出表保存與基本表中記錄沖突的所有記錄。設(shè)散列表長為m,設(shè)立基本散列表hashtable[m],每個分量保存一個記錄;溢出表overtable[m],一旦某個記錄的散列地址發(fā)生沖突,都填入溢出表中。例:已知一組關(guān)鍵字(15,4,18,7,37,47),散列表長度為7,哈希函數(shù)為:H(key)=keyMOD7,用建立公共溢出區(qū)法處理沖突。得到的基本表和溢出表如下:Hashtable表:散列地址0123456關(guān)鍵字71537447overtable表:溢出地址0123456關(guān)鍵字18建立公共溢出區(qū)Hashtable表:散列地址077哈希查找過程
哈希表的主要目的是用于快速查找,且插入和刪除操作都要用到查找。由于散列表的特殊組織形式,其查找有特殊的方法。設(shè)散列為HT[0…m-1],散列函數(shù)為H(key),解決沖突的方法為R(x,i),則在散列表上查找定值為K的記錄的過程如圖9-18所示。給定k值計(jì)算H(k)此地址為空?關(guān)鍵字==k?查找失敗查找成功按處理沖突方法計(jì)算HiNYYN圖9-18散列表的查找過程哈希查找過程哈希表的主要目的是用于快速查找,且插入和刪除操78數(shù)據(jù)結(jié)構(gòu)查找數(shù)據(jù)結(jié)構(gòu)查找79優(yōu)選數(shù)據(jù)結(jié)構(gòu)查找Ppt優(yōu)選數(shù)據(jù)結(jié)構(gòu)查找Ppt80術(shù)語:查找(檢索)——根據(jù)給定的某個值,在表中確定一個關(guān)鍵字等于給定值的記錄或數(shù)據(jù)元素關(guān)鍵字——是記錄某個數(shù)據(jù)項(xiàng)的值,它可以唯一標(biāo)識一個記錄。次關(guān)鍵字——不能唯一的確定一個記錄,但能確定表的一個子表。子表的元素個數(shù)應(yīng)遠(yuǎn)少于表中元素?cái)?shù)。為簡化問題,將表中元素看成簡單的整型數(shù)據(jù),理解為關(guān)鍵字部分。術(shù)語:818.1靜態(tài)查找表
1、順序表的順序查找
應(yīng)用范圍:順序表或線性鏈表表示的表,表內(nèi)元素之間無序。查找過程:從表的一端開始逐個進(jìn)行記錄的關(guān)鍵字和給定值的比較。
search(st,key,n)//在有n個數(shù)據(jù)的表st中找key{i=n-1;while(i>=0&&st[i]!=key)i--;if(i<0)return-1;//查找不成功返回-1
elsereturni;//查找成功返回下標(biāo)號}算法主要時(shí)間在循環(huán),為減少判定,n個數(shù)據(jù)用容量為n+1的一維數(shù)組表示。st[1]到st[n]存儲數(shù)據(jù),st[0]作為監(jiān)視哨
search1(st,key,n){st[0]=key;i=n;while(st[i]!=key)i--;returni;//查找返回序號,0為不成功}8.1靜態(tài)查找表1、順序表的順序查找應(yīng)用范82順序查找的平均時(shí)間為表長的一半。2、順序有序表的查找———二分(折半)查找查找過程:每次將待查記錄所在區(qū)間縮小一半適用條件:采用順序存儲結(jié)構(gòu)的有序表算法實(shí)現(xiàn)設(shè)表長為n,low、high和mid分別指向待查元素所在區(qū)間的上界、下界和中點(diǎn),k為給定的待查值初始時(shí),令low=1,high=n,mid=(low+high)/2讓k與mid指向的記錄比較:若k=r[mid],查找成功,結(jié)束若k<r[mid],則high=mid-1若k>r[mid],則low=mid+1重復(fù)上述操作,直至low>high時(shí),查找失敗highmidlow順序查找的平均時(shí)間為表長的一半。2、順序有序表的查找———83bin_search(st[],key,n){low=0;high=n-1;while(low<=high){mid=(low+high)/2;
if(st[mid]==key)returnmid;elseif(st[mid]>key)high=mid-1;elselow=mid+1;}return-1;}mid=(low+high)>>1;遞歸:bin_search(st[],key,l,h){if(l<=h){mid=(l+h)>>1;if(st[mid]==key)returnmid;elseif(st[mid]>key)returnbin_search(st,key,l,mid-1);elsereturnbin_search(st,key,mid+1,h)}elsereturn-1;}平均查找時(shí)間bin_search(st[],key,n)mid=(low843、分塊查找數(shù)據(jù)組織:將表分成幾塊,塊內(nèi)無序,塊間有序;先確定待查記錄所在塊,再在塊內(nèi)查找(1)用數(shù)組存放待查記錄,(2)建立索引表,由每塊中最大(?。┑年P(guān)鍵字及所屬塊位置的信息組成。3、分塊查找數(shù)據(jù)組織:8512345678910111213141516171822121389203342443824486058745786532248861713索引表查38當(dāng)索引表較大時(shí),可以采用二分查找在數(shù)據(jù)量極大時(shí),索引可能很多,可考慮建立索引表的索引,即二級索引,原則上索引不超過三級123456786分塊查找方法評價(jià)由上面的公式,在n一定時(shí),可以通過選擇s使ASL盡可能小可以證明,當(dāng)時(shí),對于(1)ASL最小。分塊查找方法評價(jià)由上面的公式,在n一定時(shí),可以通過選擇s使A87小結(jié):時(shí)間:順序查找最差,二分最好,分塊介于兩者之間空間:分塊最大,需要增加索引數(shù)據(jù)的空間特點(diǎn):1)順序查找對表沒有特殊要求2)分塊時(shí)數(shù)據(jù)塊之間在物理上可不連續(xù)。所以可以達(dá)到插入、刪除數(shù)據(jù)只涉及對應(yīng)的塊;另外,增加了索引的維護(hù)。3)二分查找要求表有序,所以若表的元素的插入與刪除很頻繁,維持表有序的工作量極大。4)在表不大時(shí),一般直接使用順序查找。小結(jié):88二分查找的C/C++接口stdlib.hvoid*bsearch(void*key,void*base,intnelement,intsize,int(*fcmp)(constvoid*,constvoid*))其中:fcmp規(guī)定:第一個數(shù)據(jù)小于第二個,返回小于0的數(shù)第一個數(shù)據(jù)等于第二個,返回0第一個數(shù)據(jù)大于第二個,返回大于0的數(shù)二分查找的C/C++接口stdlib.h89#include<iostream.h>#include<stdlib.h>cmp(constvoid*a,constvoid*b){ if(*(int*)a<*(int*)b)return-1; elseif(*(int*)a==*(int*)b)return0; elsereturn1;}voidmain(){ intar[]={-2,3,6,9,10,21,22,34,56}; int*p; intt; t=9; p=(int*)bsearch(&t,ar,sizeof(ar)/sizeof(int),sizeof(int),cmp); if(p!=NULL)cout<<*p<<endl;}#include<iostream.h>908.2動態(tài)查找8.2.1二叉排序樹和二叉平衡樹一、二叉排序樹1
二叉排序樹定義
二叉排序樹(BinarySortTree)或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹:(1)若左子樹不空,則左子樹中所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值;(2)若右子樹不空,則右子樹中所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值;(3)左、右子樹也分別為二叉排序樹;8.2動態(tài)查找8.2.1二叉排序樹和二叉平衡樹1915.2技術(shù)人員、(設(shè)備)維修人員、各加氣站負(fù)責(zé)人的安全考核:定期檢測——顧客服務(wù)的總體檢2、修改資料:從基礎(chǔ)資料列表中選擇一個準(zhǔn)備修改的基礎(chǔ)資料,然后修改其中需修改的部分,單擊【保存】按鈕將新修改的基礎(chǔ)資料存入數(shù)據(jù)庫中。具體的技巧有以下幾條:競爭性磋商響應(yīng)人遞交響應(yīng)文件前,應(yīng)提交規(guī)定數(shù)額的磋商保證金,保證金金額為人民幣40000元(肆萬元);磋商保證金遞交截止時(shí)間為2016年5月16日下午3:00。動態(tài)服務(wù)的美姿美儀臺灣銀行性質(zhì)屬于公營銀行,有7200多名員工。為了提高競爭力,臺灣銀行決定改制成股份制。那么,如何幫助這個企業(yè)進(jìn)行培訓(xùn)咨詢呢?在整個培訓(xùn)流程中,首先要讓經(jīng)理接受相應(yīng)的觀念,讓經(jīng)理痛下決心,在所有的市場、所有的支庫和支行都要做好自己的服務(wù);支行的經(jīng)理形成這樣的觀點(diǎn)后,再進(jìn)行行銷師資的培訓(xùn),接受這一級別培訓(xùn)的約有四五十人,最后再對全體普通員工進(jìn)行培訓(xùn),這樣就自上而下地逐漸建立了服務(wù)觀念。4.7.2本單位的安全生產(chǎn)狀況和規(guī)章制度,作業(yè)場所和工作崗位的安全因素及事故應(yīng)急措施,事故案例;1、經(jīng)審批合格,交清管理保證金,在管理處辦理臨時(shí)施工證方可開工。4.7新從業(yè)人員的安全生產(chǎn)培訓(xùn)內(nèi)容:3.取還信用卡的服務(wù)禮儀45372453100619078312根據(jù)二叉排序樹的定義,對二叉樹進(jìn)行LDR遍歷得到是遞增序列。5.2技術(shù)人員、(設(shè)備)維修人員、各加氣站負(fù)責(zé)人的安全考核:922、查找:步驟:若根結(jié)點(diǎn)的關(guān)鍵字值等于查找的關(guān)鍵字,成功。否則,若小于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查左子樹。若大于根結(jié)點(diǎn)的關(guān)鍵字值,遞歸查右子樹。若子樹為空,查找不成功。12225030011020099105230216
TreeNode*SearchBST(t,key)/*在二叉分類樹查找關(guān)鍵字之值為key的結(jié)點(diǎn),找到返回該結(jié)點(diǎn)的地址,否則返回空。t為二叉分類樹的根結(jié)點(diǎn)的指針。*/{if(t==NULL||key==t->data)return
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年生活服務(wù)中心招聘備考題庫參考答案詳解
- 2025年廣東省退役軍人服務(wù)中心公開招聘編外聘用工作人員備考題庫及1套完整答案詳解
- 2025年廣東大廈招聘接待員備考題庫完整參考答案詳解
- 民航上海醫(yī)院2025年度公開招聘工作人員的備考題庫完整參考答案詳解
- 2025年庫爾勒公共停車場服務(wù)管理有限公司招聘備考題庫參考答案詳解
- 2025年月僑英街道社區(qū)衛(wèi)生服務(wù)中心補(bǔ)充編外人員招聘備考題庫及完整答案詳解一套
- 理論實(shí)戰(zhàn)培訓(xùn)課件
- 抽獎互動話術(shù)
- 冰淇淋促銷話術(shù)
- 酒局收尾話術(shù)技巧
- 2026天津市濱海新區(qū)事業(yè)單位招聘25人備考題庫必考題
- 2025年有關(guān)護(hù)理程序試題及答案
- 2026包鋼(集團(tuán))公司新員工招聘322人考試題庫附答案
- 2025年云南省人民檢察院聘用制書記員招聘(22人)筆試考試備考題庫及答案解析
- 店長崗位職責(zé)與日常管理手冊
- 大學(xué)生校園創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 2025-2026學(xué)年北師大版五年級數(shù)學(xué)上冊(全冊)知識點(diǎn)梳理歸納
- 形勢與政策(吉林大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋吉林大學(xué)
- 2026年全年日歷表帶農(nóng)歷(A4可編輯可直接打?。╊A(yù)留備注位置
- DL/T 5218-2012 220kV~750kV變電站設(shè)計(jì)技術(shù)規(guī)程
- 范里安-微觀經(jīng)濟(jì)學(xué):現(xiàn)代觀點(diǎn)1
評論
0/150
提交評論