




已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù):描述客觀事物的信息(數(shù),字符,符號(hào)等)的集合,是程序處理的對象。,數(shù)據(jù)結(jié)構(gòu)基本概念,數(shù)據(jù)元素:是數(shù)據(jù)集合中的個(gè)體,是構(gòu)成數(shù)據(jù)對象的基本單位,一個(gè)數(shù)據(jù)元素可由若干個(gè)數(shù)據(jù)項(xiàng)組成。,數(shù)據(jù)項(xiàng):是數(shù)據(jù)的最小單位。一組數(shù)據(jù)元素具有某種結(jié)構(gòu)形式。,對象,對象的屬性,數(shù)據(jù)結(jié)構(gòu)定義,數(shù)據(jù)結(jié)構(gòu):描述了一組性質(zhì)相同的數(shù)據(jù)元素及元素間的相互關(guān)系。,都是學(xué)生,D:一幫學(xué)生,R:按學(xué)號(hào)排序,數(shù)據(jù)結(jié)構(gòu)概念的三要素定義,數(shù)據(jù)元素之間的邏輯關(guān)系,數(shù)據(jù)元素在計(jì)算機(jī)中的存儲(chǔ)方式,在這些數(shù)據(jù)元素上定義的運(yùn)算的集合,數(shù)據(jù)結(jié)構(gòu)的基本分類,兩大類:(一)線性結(jié)構(gòu)(線性表)數(shù)據(jù)元素之間的邏輯關(guān)系可以用一個(gè)線性序列簡單地表示出來。線性表是典型的線性結(jié)構(gòu),它的數(shù)據(jù)元素只按先后次序聯(lián)接。表、棧、隊(duì)列、字串、數(shù)組和文件等方式。,(二)非線性結(jié)構(gòu)(樹,圖)不滿足線性結(jié)構(gòu)特點(diǎn)的數(shù)據(jù)結(jié)構(gòu)稱為非線性結(jié)構(gòu)。樹、圖等是非線性結(jié)構(gòu)。樹中的數(shù)據(jù)元素是分層次的縱向聯(lián)接。圖中的數(shù)據(jù)元素則有各種各樣復(fù)雜聯(lián)接。其它種類的數(shù)據(jù)結(jié)構(gòu)由這三種基本結(jié)構(gòu)派生的。,數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的基本方式,最常用的二種方式是:順序存儲(chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。,數(shù)據(jù)元素按某種順序存放在存儲(chǔ)器的連續(xù)存儲(chǔ)單元中。邏輯相鄰,物理上相鄰,數(shù)據(jù)元素之間的關(guān)系由存儲(chǔ)單元的鄰接關(guān)系唯一確定。例如數(shù)組就是這種存儲(chǔ)方式,順序存儲(chǔ)結(jié)構(gòu),學(xué)生名單(邏輯結(jié)構(gòu))順序物理結(jié)構(gòu)(數(shù)組student),順序存儲(chǔ)結(jié)構(gòu)特點(diǎn),結(jié)點(diǎn)中只有自身信息域,沒有連接信息域。存儲(chǔ)密度大,存儲(chǔ)空間利用率高;,可以通過計(jì)算直接確定數(shù)據(jù)結(jié)構(gòu)中第i個(gè)結(jié)點(diǎn)的存儲(chǔ)地址。即可以對記錄直接進(jìn)行存??;,插入、刪除運(yùn)算會(huì)引起大量結(jié)點(diǎn)的移動(dòng);,要求存儲(chǔ)在一片連續(xù)的地址中。,這種存儲(chǔ)方式主要用于線性的數(shù)據(jù)結(jié)構(gòu)。,存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的內(nèi)存空間可以不連續(xù),數(shù)據(jù)元素之間的關(guān)系由指針來確定。,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),主要特點(diǎn)是:結(jié)點(diǎn)由兩類域組成:數(shù)據(jù)域和指針域。,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)特點(diǎn),邏輯上相鄰的結(jié)點(diǎn)物理上不必鄰接,既可實(shí)現(xiàn)線性數(shù)據(jù)結(jié)構(gòu),又可用于表示非線性數(shù)據(jù)結(jié)構(gòu)。,插入,刪除操作靈活方便,不必移動(dòng)結(jié)點(diǎn),只要改變結(jié)點(diǎn)中的指針值即可。,特點(diǎn):表中的每個(gè)元素呈線性關(guān)系,除第一個(gè)外,都有一個(gè)直接前趨(predecessor),除最后一個(gè)元素外,都僅有一個(gè)后繼(successor)。,線性表最簡單,最常用的數(shù)據(jù)結(jié)構(gòu),線性表的邏輯結(jié)構(gòu)線性表L用符號(hào)表示為:L=(a1,a2,a3,.ai.,an),線性表的存儲(chǔ)結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈接存儲(chǔ)結(jié)構(gòu)。,具有順序存儲(chǔ)結(jié)構(gòu)的線性表稱為順序表用數(shù)組儲(chǔ)線性表中的每個(gè)數(shù)據(jù)元素。,具有鏈接存儲(chǔ)結(jié)構(gòu)的線性表稱為線性鏈表。用一組任意的存儲(chǔ)單元來存儲(chǔ)線性表中數(shù)據(jù)元素的,這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。通常亦稱為鏈表。常用的鏈表有單鏈表、循環(huán)鏈表和雙向鏈表。,順序表類設(shè)計(jì)分析,對象的屬性:自己現(xiàn)有的數(shù)據(jù):存放在一個(gè)數(shù)組中現(xiàn)有數(shù)據(jù)的個(gè)數(shù):長度能存放多少數(shù)據(jù):容量,動(dòng)作(Method)構(gòu)造方法:傳遞表的容量,創(chuàng)建一個(gè)空表,有效長度=0插入:新數(shù)據(jù)插入后,數(shù)據(jù)還是有序的,長度增1增加:在表的尾部增加一個(gè)數(shù)據(jù),長度增1查找:根據(jù)鍵值,找到數(shù)據(jù)在表中的位置,并返回,找不到返回-1更新:用指定的值更新表中指定位置的元素的值排序:將表中元素按從小到大排序。獲得某位置元素的值:獲得線性表的長度,類型dataintlengthIntvolume,?能為每個(gè)方法作定義嗎?名字,形參表,返回類型,確定表中的元素,publicclassStudentpublicstringno,name;publicdoublemath,eng,computer;publicStudent().,?這個(gè)類有點(diǎn)怪,屬性都是public沒其他方法,這種類稱為數(shù)據(jù)類,去重,返回類型問題,是重新生成一個(gè)?還是直接刪除,應(yīng)該是:ArrayList,應(yīng)該是:重新生成一個(gè)不破壞原來的數(shù)據(jù),去重的思維,你是怎么思維的?,擴(kuò)展思維,數(shù)據(jù)不斷添加,順序表滿了后,能否自動(dòng)長大?,原來,變更后,原來的2倍,Studentdata,Studenttemp,length?volume?,for()tempi=datai,單鏈表線性表的另一種存儲(chǔ)方式,一鏈表的基本組成元素,由表頭指針決定通過移動(dòng)指針遍歷鏈表,遇到null結(jié)束組成要素:節(jié)點(diǎn),節(jié)點(diǎn)中包含數(shù)據(jù)鏈表的屬性定義:,null,單鏈表,一鏈表的基本組成元素節(jié)點(diǎn),publicclassNode/定義節(jié)點(diǎn)類publicintdata;publicNodenext;publicNode(inti)data=i;next=null;,鏈表的逆轉(zhuǎn),先生成一個(gè)空新鏈表遍歷原鏈表每取一個(gè)節(jié)點(diǎn),向新表的表頭插入新節(jié)點(diǎn)直到原表遍歷結(jié)束,去重的原理,生成一個(gè)新鏈表遍歷原表,每取一個(gè)節(jié)點(diǎn),判斷它在新表中是否存在,如果重復(fù)就不加。直到原表結(jié)束,限定在一端進(jìn)行插入與刪除的線性表。允許操作的一端稱為棧頂,而不允許操作的一端為棧底。給定棧(a1,an-1)稱a1為棧底元素,an為棧頂元素。特點(diǎn)后進(jìn)先出(LIFOLastInFirstOut)或先進(jìn)后出(FILO)的線性表。元素的插入稱為進(jìn)棧,元素的刪除稱為出棧。,堆棧及邏輯結(jié)構(gòu),屬性棧頂指針棧的容量,棧的屬性和方法,方法出棧:棧頂元素出棧,指針下移進(jìn)棧:新元素放棧頂,指針上移判斷???用一組地址連續(xù)的存儲(chǔ)單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素,順序存儲(chǔ)的棧,指針top指示棧頂元素的位置。,用Volume表示棧的容量,用一維數(shù)組stackvolume表示棧,指針top指向棧頂元素.stack0為最早進(jìn)入棧的元素,stacktop為最遲進(jìn)入棧的元素。當(dāng)top=volume-1時(shí),為滿棧.,初始化top=-1,數(shù)據(jù)元素和棧頂指針之間的對應(yīng)關(guān)系,鏈?zhǔn)酱鎯?chǔ)的棧,關(guān)鍵點(diǎn),只需一個(gè)屬性,它就是棧頂指針top基本元素與鏈表中的一個(gè)節(jié)點(diǎn)一樣,參見Node類定義棧初始化時(shí),讓top指針為null實(shí)現(xiàn)其push,pop和isEmpty方法主程序保持順序存儲(chǔ)堆棧的界面和功能,壓棧過程,19,top,2,8,10,node,將新給定值形成節(jié)點(diǎn)將新節(jié)點(diǎn)連接到棧頂,彈出,top,2,8,10,保存棧頂值,棧頂指針指向下一個(gè)節(jié)點(diǎn)返回棧頂值,隊(duì)列(Queue)操作受限的線性表先進(jìn)先出(FIFO)的線性表.(a1,a2,an)允許在表的一端插入,在表的另一端刪除,插入的一端叫隊(duì)尾(rear),刪除的一端稱隊(duì)頭(front)。,隊(duì)列,順序存儲(chǔ)隊(duì)列,何時(shí)滿,順序隊(duì)列的屬性,頭、尾、存儲(chǔ)數(shù)據(jù)的數(shù)組。,構(gòu)造函數(shù):設(shè)置頭、尾,都是0;申請數(shù)據(jù)存儲(chǔ)空間的數(shù)組,隊(duì)空front=rear,滿(rear+1)%volume=front進(jìn)隊(duì)rear=(rear+1)%volume;queuerear=x;出列front=(front+1)%volume;x=queuefront,出列,booloutQueue(outintx)/ref關(guān)鍵字為把x的值返回給調(diào)用函數(shù)入列,voidinQueue(intx)判斷隊(duì)列是否為空,boolisEmpty(),鏈?zhǔn)疥?duì)列,只有append方法的鏈表就是隊(duì)列增加一個(gè)出列的方法,采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的隊(duì)列稱為鏈隊(duì)列。一個(gè)鏈隊(duì)列需要隊(duì)頭和隊(duì)尾的兩個(gè)指針才能唯一確定。,head,tail,二叉樹,定義為:或?yàn)榭?,或由一個(gè)根結(jié)點(diǎn)加上兩棵分別稱為左子樹和右子樹的二叉樹組成。,二叉樹不是樹的特殊情況。二叉樹的結(jié)點(diǎn)子樹要區(qū)分為左子樹和右子樹,即使在結(jié)點(diǎn)只有一棵子樹的情況下,也要明確指出該子樹是左子樹還是右子樹。二叉樹允許空.而一般的樹至少有一個(gè)結(jié)點(diǎn)。,滿二叉樹:深度為K,有2K-1個(gè)結(jié)點(diǎn)的二叉樹稱為滿二叉樹。每一層上的結(jié)點(diǎn)數(shù)都是該層上的最大結(jié)點(diǎn)數(shù)。,特殊的二叉樹,特殊的二叉樹,完全二叉樹:樹高為k,除第k層外,其它各層(1k-1)的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù),第k層從右向左連續(xù)缺若干結(jié)點(diǎn),這就是完全二叉樹如果對一棵高為K,具有n個(gè)結(jié)點(diǎn)的完全二叉樹或高為K的滿二叉樹從根結(jié)點(diǎn)開始,從上到下,從左到右進(jìn)行連續(xù)編號(hào),則位置編號(hào)與結(jié)點(diǎn)的編號(hào)相同。,第K層少一個(gè),完全二叉樹,二叉樹圖例,滿二叉樹,性質(zhì)1在二叉樹中,第i層最多有2i-1個(gè)結(jié)點(diǎn)。i=1性質(zhì)2在深度為K的二叉樹中,結(jié)點(diǎn)總數(shù)最多為2K-1個(gè),K1性質(zhì)3對任何一棵二叉樹T,如果其終端結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+1。,二叉樹性質(zhì),推導(dǎo):設(shè)n1為二叉樹T度為1的結(jié)點(diǎn)數(shù)。因?yàn)槎鏄銽中結(jié)點(diǎn)的度數(shù)均小于或等于2,所以其結(jié)點(diǎn)總數(shù)為:n=n0+n1+n2(1)設(shè)m為二叉樹T中總的分支數(shù)目。因?yàn)槌Y(jié)點(diǎn)外,其余結(jié)點(diǎn)都有一個(gè)分支進(jìn)入,所以m=n-1。但這些分支是由度為1或2的結(jié)點(diǎn)射出的,所以m=n1+2n2,于是得n=n1+2n2+1(2)由(1)式和(2)式得n0=n2+1,性質(zhì)4具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為log2n+1。,性質(zhì)4,推導(dǎo)過程:假設(shè)樹的深度為K。則根據(jù)性質(zhì)2和完全二叉樹的定義,有2K-1-1n2k-1或2K-1nn,結(jié)點(diǎn)i無左孩子(此時(shí)結(jié)點(diǎn)i為葉子);否則其左孩子是結(jié)點(diǎn)2i。,如果2i+1n,結(jié)點(diǎn)i無右孩子;否則其孩子是結(jié)點(diǎn)2i+1。,A,B,D,E,C,F,G,A,B,C,D,E,F,G,/,/,/,/,/,/,/,/,root,二叉樹的鏈?zhǔn)酱鎯?chǔ),二叉樹節(jié)點(diǎn)設(shè)計(jì),publicclassTreeNodepublicchardata;publicTreeNodeleftChild;publicTreeNoderightChild;publicTreeNode(charc)data=c;leftChild=null;rightChild=null;,節(jié)點(diǎn)類,C,/,/,TreeNoden=newTreeNode(C);,n,定義:樹的每個(gè)結(jié)點(diǎn)按某種規(guī)律恰好被訪問一次的過程。,二叉樹的編歷,從二叉樹的遞歸定義可知,二叉樹是由三個(gè)基本單元組成,即根結(jié)點(diǎn)(D),左子樹(L),右子樹(R)。因此,若能依次遍歷這三部分,便是遍歷了整個(gè)二叉樹。,根據(jù)排列組合,共有六種方案,即DLR,LDR,LRD,DRL,RDL,RLD。太麻煩,限定對左右子樹的訪問次序:先左后右,則只有前三種情況,分別稱為先序遍歷,中序遍歷和后序遍歷。,遍歷后可以從非線性結(jié)構(gòu)的二叉樹得到各個(gè)結(jié)點(diǎn)的線性排列。先序遍歷(1)處理根(2)按先序遍歷左子樹(3)按先序遍歷右子樹中序遍歷(1)按中序遍歷左子樹(2)處理根(3)按中序遍歷右子樹后序遍歷(1)按后序遍歷左子樹(2)按后序遍歷右子樹(3)處理根,A,B,D,E,F,G,C,H,I,遍歷的例子,先序:ABDEHICFG,中序:DBHEIAFCG,后序:DHIEBFGCA,二叉樹類設(shè)計(jì),publicclassBiTreeprivateTreeNoderoot;privatestringtreeStr;/記錄用于創(chuàng)建二叉樹的字符串privateinti=0;/創(chuàng)建二叉樹時(shí),用變量i索引創(chuàng)建的字符串/創(chuàng)建二叉樹時(shí)使用,用來引用treeStr串中的一個(gè)字符privatestringresult;/先、中、后遍歷時(shí),得到的結(jié)果記錄在這里publicBiTree()root=null;privatevoidsetTreeStr(strings)/設(shè)置用來構(gòu)造二叉樹的字符串treeStr=s;this.i=0;,創(chuàng)建樹時(shí),需要提供字符串。,二叉樹先序編歷已知樹根,voidpreOrder(TreeNodet)/遞歸先序遍歷if(t!=null)this.result+=+t.data;/先序遍歷的結(jié)果,保存在類屬性resultpreOrder(t.leftChild);preOrder(t.rightChild);,publicTreeNodegetRoot()returnthis.root;,從類外(窗體類)看二叉樹類1如何調(diào)用?2如何獲取結(jié)果?,無法操作樹根!因?yàn)閞oot是私有的,主窗體中:TreeNodetn=tree.getRoot();tree.preOrder(tn);,結(jié)果保存在result屬性中,私有解決辦法:為BiTree類中增加辦法,二叉樹先序編歷存在的問題,每次調(diào)用preOrder前,需要獲得樹根還需要將result變量初始化,否則下次遍歷的結(jié)果就不對遍歷結(jié)束后,還要記住去取結(jié)果。,灰常不方便,二叉樹先序編歷更好的辦法,publicstringpreOrder()/先序遍歷this.result=;/每次調(diào)用前,result初始化preOrder(this.root);/類內(nèi),直接用rootreturnthis.result;/返回遍歷結(jié)果,利用OOP的重載,原來的定義voidpreOrder(TreeNodet),重載:同一個(gè)類中,方法名相同,形參和返回類型不一樣,主窗體中:Stringans=tree.preOrder();輸出ans,重載的2方法一個(gè)private一個(gè)public,二叉樹的創(chuàng)建-輔助工作,privateTreeNodecreateThisTree()TreeNodet;charc;c=this.treeStrthis.i+;/從字符串中取第i個(gè)字符,i是類中定義的變量,全局if(c=#)return(null);elset=newTreeNode(c);t.leftChild=createThisTree();t.rightChild=createThisTree();return(t);,publicvoidcreateTree(stringtreeStr)/給定的字符串,創(chuàng)建二叉樹this.setTreeStr(treeStr);root=createThisTree();,還是用重載一個(gè)private一個(gè)public,/給定的字符串,以#代表樹葉,主函數(shù)中的調(diào)用1獲得創(chuàng)建樹字符串str2tree.createTree(str);,創(chuàng)建二叉樹,A,B,C,AB#C#,A,B,AB#,A,C,A#C#,從遍歷結(jié)果推導(dǎo)樹,給出一棵二叉樹的先序遍歷結(jié)果和中序遍歷結(jié)果,或者給出后序遍歷結(jié)果和中序遍歷結(jié)果,就可畫出該二叉樹;,只給出二叉樹先序遍歷結(jié)果和后序遍歷結(jié)果,則無法畫出該二叉樹。,有兩棵二叉樹T1和T2,它們的先序和后序遍歷結(jié)果完全相同。顯然只憑先序和后序遍歷結(jié)果無法確定到底是哪一棵二叉樹。,先序?yàn)锳BCDEFGHI中序?yàn)锽CAEDGHFI,根據(jù)遍歷解結(jié)果推導(dǎo)樹-例子,原則:根據(jù)先序定義:A必為根結(jié)點(diǎn)。根據(jù)中序定義:A前的結(jié)點(diǎn)為左子樹A后的結(jié)點(diǎn)為右子樹。,A,B,E,F,C,D,I,G,H,查找,在數(shù)據(jù)結(jié)構(gòu)中找出滿足某種條件的數(shù)據(jù)元素,若在數(shù)據(jù)結(jié)構(gòu)中找到了這樣的元素,則稱查找成功否則稱查找失敗。,順序查找法,從表的第一個(gè)元素開始,將給定的值與表中各元素的關(guān)鍵字逐個(gè)進(jìn)行比較,一直到找到相等的關(guān)鍵字,則查找成功;否則就是表中沒有要找的元素,查找失敗。,順序查找法,publicintsearch(intkeyValue)inti=0;while(datai!=keyValue,publicintsearch(intkeyValue)inti=0;for(;ithis.length;i+)if(datai=keyValue)returni;elsereturn-1;,哪兒錯(cuò)了?,線性查找法,適用于有序線性表,二分查找法,以順序方式存放的有序表的查找可采用對半查找。,18,21,31,37,43,46,52,57,63,96,63,data0,data9,m=(0+9)/2=4,datam,m=(5+9)/2=7,datam,m=(8+9)/2=8,datam,線性查找法,publicintbinSearch(charkeyValue)intlow,high,mid;/low,high,mid分別代表當(dāng)前查找的表的下限、上限和中間位置low=0;/初始化下限為數(shù)據(jù)的第一個(gè)元素的位置high=length-1;/上限為最后一個(gè)元素的位置while(low=high)mid=(low+high)/2;/確定中間位置if(datamid=keyValue)return(mid);if(datamidkeyValue)low=mid+1;elsehigh=mid-1;return(-1);,二分查找法代碼,二叉排序樹查找,二分查找法特別適合于從已排序的結(jié)點(diǎn)中尋找給定值。,若線性表中的結(jié)點(diǎn)需要經(jīng)常插入和刪除,最好設(shè)計(jì)成結(jié)合鏈表和二分法的查找方法。,二叉排序樹定義,(1)左子樹不空,則左子樹上所有的關(guān)鍵字均小于它的根結(jié)點(diǎn)的關(guān)鍵字;,(2)右子樹不空,則右子樹上所有的關(guān)鍵字均大于或等于它的根結(jié)點(diǎn)的關(guān)鍵字;,(3)它的左、右子樹也是二叉排序樹。,92,69,21,89,93,99,97,78,91,二叉排序樹-查找算法,在給定的二叉排序樹t中查找給定待查關(guān)鍵字K:,1.如果樹t為空,那么查找失敗。算法結(jié)束;否則,轉(zhuǎn)2。,2.如果t.data=K,則查找成功。算法結(jié)束。否則轉(zhuǎn)3。,3.如果Kt.data,那么t=t.lchild,轉(zhuǎn)(1)。否則t=t.rchild,轉(zhuǎn)(1)。,二叉排序查找,publicTreeNodebanSearch(doublek)TreeNodep=this.root;while(p!=null),代碼重建二叉樹,節(jié)點(diǎn)的數(shù)據(jù)類型改成double,92,69,21,89,93,99,97,78,91,k=100查找返回的結(jié)果是什么?,二叉排序創(chuàng)建,92,69,21,89,93,99,97,78,91,79,p,q,找啊找啊找位置,結(jié)束的條件是什么。,二叉排序創(chuàng)建,publicvoidinsBTree(doublek)TreeNodep,q;q=newTreeNode(k);if(root=null)root=q;return;p=root;while(p.leftChild!=q)elsep.leftChild=q;/*插入到左子樹*/elseif(p.rightChild!=null)p=p.rightChild;elsep.rightChild=q;/*插入到右子樹*/endofwhile,二叉排序樹類,publicclassBiSortTreeprivateTreeNoderoot;publicBiSortTree()root=null;publicBiSortTree(TreeNoderoot)this.root=root;publicvoidinsBTree(doublek)publicTreeNodebanSearch(doublek),這2個(gè)方法的代碼在前面,記得數(shù)據(jù)類型用double,選擇排序-快速排序,基本思想:通過一趟分割將線性表分成兩部分,其中前一部分的所有元素值均不大于后一部分中的每一元素值;,對每一部分再進(jìn)行分割,直到整個(gè)線性表有序?yàn)橹埂?快速排序-分割步驟,設(shè)置兩個(gè)指針i和j,初態(tài)分別指向序列中第一個(gè)記錄和最后一個(gè)記錄。將第一個(gè)記錄移向輔助變量x中,再從j所指位置起向前搜索第一個(gè)小于x的記錄,找到后,將aj移至ai的位置;i+,從i所指向位置開始后搜索第一個(gè)關(guān)鍵字大于x的記錄,找到后,將ai移至aj的位置;重復(fù)這兩步過程,直至i=j,最后將x送至ai中去。至此一趟排序完成,序列劃分為兩個(gè)子文件。,數(shù)據(jù)舉例,初始狀態(tài)433328175263326Xij一次交換263328175263326ij二次交換263328175263352ij三次交換26332817363352ij四次交換263328173636352ij263328173436352i=j,數(shù)據(jù)舉例,(a)一趟排序初始狀態(tài)4521341952603424第一趟242134193445
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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年下沉市場消費(fèi)金融風(fēng)險(xiǎn)管理策略與工具應(yīng)用報(bào)告
- 2025年體檢行業(yè)服務(wù)質(zhì)量提升與行業(yè)競爭力提升策略報(bào)告
- 藥品連鎖企業(yè)管理制度
- 藥品首付責(zé)任管理制度
- 藥店召回追回管理制度
- 藥店缺貨補(bǔ)充管理制度
- 營業(yè)場所噪音管理制度
- 設(shè)備使用初期管理制度
- 設(shè)備基礎(chǔ)資料管理制度
- 設(shè)備技術(shù)狀況管理制度
- 2025年北方華創(chuàng)招聘筆試參考題庫含答案解析
- 期末綜合試題 2024-2025學(xué)年下期初中英語人教版七年級(jí)下冊(新教材)
- 2025年全國新高考I卷高考全國一卷真題英語試卷(真題+答案)
- 公共組織績效評估-形考任務(wù)三(占10%)-國開(ZJ)-參考資料
- 2025年廣東高中學(xué)業(yè)水平合格性考試化學(xué)試卷試題(含答案解析)
- 康復(fù)醫(yī)學(xué)科治療技術(shù)操作規(guī)范2023版
- 2025年貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- JT∕T 795-2023 事故汽車修復(fù)技術(shù)規(guī)范
- 趣識(shí)古文字智慧樹知到期末考試答案章節(jié)答案2024年吉林師范大學(xué)
- 奧數(shù)訓(xùn)練專題——加減簡便計(jì)算
- 國家開放大學(xué)《Matlab語言及其應(yīng)用》形考作業(yè)1-3參考答案
評論
0/150
提交評論