數據結構與算法_第1頁
數據結構與算法_第2頁
數據結構與算法_第3頁
數據結構與算法_第4頁
數據結構與算法_第5頁
已閱讀5頁,還剩93頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2數據結構與算法1整理ppt2.1算法2.1.1算法(algorithm)根本概念對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。它是一組嚴謹地定義運算順序的規那么,并且每一個規那么都是有效的,且是明確的,此順序將在有限的次數下終止。算法具有有窮性、確定性、可行性、輸入和輸出等5個重要特性。2整理ppt2.1.2算法的根本要素1、對數據對象的運算和操作算術運算邏輯運算關系運算數據傳輸2、算法的控制結構算法中各操作之間的執行順序描述算法的工具通常有傳統流程圖、N-S結構化流程圖、算法描述語言等一個算法一般可以用順序、選擇、循環三種根本機構組合而成。3整理ppt2.1.3算法設計根本方法列舉法歸納法遞推遞歸〔以簡潔的形式設計和描述算法〕減半遞推技術回溯法4整理ppt2.2算法復雜度2.2.1時間復雜度依據算法算法編制的程序在計算機上運行時所消耗的時間來度量。通常有事后統計法和事前分析估算法。一個算法是由控制結構〔順序、分支和循環〕和原操作構成的,算法時間取決于兩者的綜合效果。算法中根本操作重復執行次數n和算法執行時間同步增長,稱作算法的時間復雜度。5整理ppt2.2.2算法的空間復雜度一般是指執行這個算法所需要的內存空間一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數據所占的存儲空間以及某種數據結構所需要的附加存儲空間一個上機執行的程序除了需要存儲空間來存放本身所用指令、常數、變量和輸入數據外,也需要一些對數據進行操作的工作單元和存儲一些為實現計算所需信息的輔助空間。6整理ppt例題講解7整理ppt算法的時間復雜度是指〔〕A)執行算法程序所需要的時間B)算法程序的長度C)算法執行過程中所需要的根本運算次數D)算法程序中的指令條數算法的空間復雜度是指〔〕A)算法程序的長度B)算法程序中的指令條數C)算法程序所占的存儲空間D)執行過程中所需的存儲空間在計算機中,算法是指〔〕A)加工方法 B)解題方案的準確而完整的描述C)排序方法 D)查詢方法8整理ppt算法分析的目的是〔〕A)找出數據結構的合理性 B)找出算法中輸入和輸出之間的關系C)分析算法的易懂性和可靠性 D)分析算法的效率以求改進以下表達中正確的選項是〔〕A)算法的效率只與問題的規模有關,而與數據的存儲結構無關。B)算法的時間復雜度是指執行算法所需的計算工作量。C)數據的邏輯結構與存儲結構是一一對應的。D)算法的時間復雜度與空間復雜度一定相關。算法的根本特征是可行性、確定性、〔〕輸入、輸出。9整理ppt2.2數據結構數據結構的定義數據的邏輯結構和存儲結構數據結構的圖形表示線性結構與非線性結構10整理ppt

數據結構是一門研究數據組織、存儲和運算的一般方法的學科。數據結構是反映數據元素之間關系的數據元素集合的表示,即數據的組織形式。數據結構定義11整理ppt數據元素(DataElement)數據元素是數據的根本單位,即數據集合中的個體。有時一個數據元數可由假設干數據項(DataItem)組成。數據項是數據的最小單位。數據元素亦稱節點或記錄。12整理ppt數據結構主要研究以下三個方面的問題:數據的邏輯結構數據的存儲結構對各種數據結構進行的運算

13整理ppt數據的邏輯結構數據的邏輯結構是指反映數據元素之間邏輯關系的數據結構。兩個要素1〕數據元素集合2〕數據元素之間的關系表示形式B=(D,R)其中B表示一個數據結構D表示數據元素集合R表示數據元素之間的關系14整理ppt數據的存儲結構數據的存儲結構也稱數據的物理結構,是數據的邏輯結構在計算機存儲空間的存放形式。數據結構的存儲方式:

1.順序存儲方法

2.鏈式存儲方法

3.索引存儲方法

4.散列存儲方法15整理ppt數據結構的圖形表示

數據結構的表示形式

1)二元關系表

2)圖形

B=(D,R)D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3)(3,4),(2,4)}142316整理ppt線性結構與非線性結構根據數據結構中各數據元素之間前后關系的復雜程度,將數據結構分為線性結構與非線性結構。線性結構定義:如果一個非空的數據結構滿足以下兩個條件:1.有且只有一個根節點2.每個節點最多有一個直接前驅,也最多有一個直接后繼。那么稱該數據結構為線性結構,又稱線性表。在一個線性結構中插入或刪除任何一個節點還應該是線性結構。17整理ppt例題例1:以下表達正確的選項是〔〕〔2007.9〕A)程序執行的效率與數據的存儲結構密切相關B〕程序執行的效率只取決于程序的控制結構C〕程序執行的效率只取決于所處理的數據量D〕以上三種說法都不對例2數據結構分為線性結構和非線性結構,帶鏈的隊列屬于_____結構。(2006.9)

18整理ppt2.3線性表2.3.1線性表的定義線性表是n個元素的有限序列,它們之間的關系可以排成一個線性序列:

a1,a2,……,ai,……,an其中n稱作表的長度,當n=0時,稱作空表。19整理ppt線性表的特點:1.線性表中所有元素的性質相同。2.除第一個和最后一個數據元素之外,其它數據元素有且僅有一個前驅和一個后繼。第一個數據元素無前驅,最后一個數據元素無后繼。3.數據元素在表中的位置只取決于它自身的序號。在線性表上常用的運算有:初始化、求長度、取元素、修改、前插、刪除、檢索、排序。20整理ppt線性表及其順序存儲結構線性表的順序存儲結構

線性表的順序存儲是指在內存中用地址連續的一塊存儲空間順序存放線性表的各元素。用這種存儲形式存儲的線性表稱其為順序表。21整理ppt元素an……..元素ai……..元素a2元素a1bb+mb+(i-1)*mb+(maxlen-1)*m存儲地址內存狀態Loc(元素i)=b+〔i-1)*m順序存儲結構示意圖(順序表):首地址起始地址基地址每個元素所占用的存儲單元個數22整理ppt2.3.2線性表的順序存儲結構特點:

1、線性表中數據元素類型一致,只有數據域,存儲空間利用率高。

2、所有元素所占的存儲空間是連續的

3、各數據元素在存儲空間中是按邏輯順序依次存放的

2.做插入、刪除時需移動大量元素。

3.空間估計不明時,按最大空間分配。23整理ppt元素a1元素a2……..元素ai+1……..01i線性表的順序存儲結構——可用C語言中的一維數組來描述.intV[M];

/*V是數組的名字,M是數組大小,假設數組中的元素是整型類型*/第i個元素的ai存儲地址:Loc(ai)=Loc(a1)+(i-1)*kV[0]V[1]V[i]V[m-1]24整理ppt…..a2a1an…..ai+1ai01i-1in-11-1插入運算ai-1…..a2a1alength…ai+1aixai-1…..a2a1

aiai+1…alength

alength……ai+1aix25整理ppt…..a2a1an…..ai+1ai01i-1in-11-2刪除運算ai-1…..a2a1alength…ai+1aixai-1…..a2a1

ai

…alength

alength…aix…26整理ppt插入算法的分析假設線性表中含有n個數據元素,在進行插入操作時,假設假定在n+1個位置上插入元素的可能性均等,那么平均移動元素的個數為:27整理ppt刪除算法的分析在進行刪除操作時,假設假定刪除每個元素的可能性均等,那么平均移動元素的個數為:分析結論順序存儲結構表示的線性表,在做插入或刪除操作時,平均需要移動大約一半的數據元素。當線性表的數據元素量較大,并且經常要對其做插入或刪除操作時,這一點需要值得考慮。28整理ppt例題講解29整理ppt鏈表不具有的特點是不必事先估計存儲空間可隨機訪問任一元素C)插入刪除不需要移動元素 D)所需空間與線性表長度成正比數據結構分為邏輯結構與存儲結構,線性鏈表屬于【1】

。數據的邏輯結構有線性結構和【1】

兩大類。30整理ppt順序存儲方法是把邏輯上相鄰的結點存儲在物理位置

【2】的存儲單元中。數據處理的最小單位是

A)數據 B)數據元素C)數據項 D)數據結構數據結構作為計算機的一門學科,主要研究數據的邏輯結構、對各種數據結構進行的運算,以及

A)數據的存儲結構 B)計算方法C)數據映象D)邏輯存儲線性表的順序存儲結構和線性表的鏈式存儲結構分別是

A)順序存取的存儲結構、順序存取的存儲結構

B)隨機存取的存儲結構、順序存取的存儲結構

C)隨機存取的存儲結構、隨機存取的存儲結構

D)任意存取的存儲結構、任意存取的存儲結構31整理ppt根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分成A)動態結構和靜態結構 B)緊湊結構和非緊湊結構C)線性結構和非線性結構D)內部結構和外部結構數據結構包括數據的邏輯結構、數據的【2】以及對數據的操作運算。數據的根本單位是【5】。32整理ppt以下表達中,錯誤的選項是A)數據的存儲結構與數據處理的效率密切相關B)數據的存儲結構與數據處理的效率無關C)數據的存儲結構在計算機中所占的空間不一定是連續的D)一種數據的邏輯結構可以有多種存儲結構數據的存儲結構是指A〕數據所占的存儲空間B〕數據的邏輯結構在計算機中的表示C〕數據在計算機中的順序存儲方式D〕存儲在外存中的數據33整理ppt鏈表不具有的特點是A)不必事先估計存儲空間B)可隨機訪問任一元素C)插入刪除不需要移動元素 D)所需空間與線性表長度成正比順序存儲方法是把邏輯上相鄰的結點存儲在物理位置

【2】的存儲單元中。長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數為【1】

。34整理ppt線性表L=(a1,a2,a3,…ai,…an),以下說法正確的選項是A)每個元素都有一個直接前驅和直接后繼B)線性表中至少要有一個元素C)表中諸元素的排列順序必須是由小到大或由大到小D)除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前驅和直接后繼線性表的順序存儲結構和線性表的鏈式存儲結構分別是A)順序存取的存儲結構、順序存取的存儲結構B)隨機存取的存儲結構、順序存取的存儲結構C)隨機存取的存儲結構、隨機存取的存儲結構D)任意存取的存儲結構、任意存取的存儲結構35整理ppt根據數據結構中各數據元素之間前后件關系的復雜程度,一般將數據結構分成A)動態結構和靜態結構 B)緊湊結構和非緊湊結構C)線性結構和非線性結構D)內部結構和外部結構當線性表采用順序存儲結構實現存儲時,其主要特點是【1】。線性表假設采用鏈式存儲結構時,要求內存中可用存儲單元的地址A)必須是連續的 B)局部地址必須是連續的C)一定是不連續的D)連續不連續都可以36整理ppt以下表達中,錯誤的選項是A)數據的存儲結構與數據處理的效率密切相關B)數據的存儲結構與數據處理的效率無關C)數據的存儲結構在計算機中所占的空間不一定是連續的D)一種數據的邏輯結構可以有多種存儲結構37整理ppt2.4棧和隊列2.4.1棧和隊列的定義

棧和隊列是兩種特殊的線性表,它們是運算時要受到某些限制的線性表,故也稱為限定性的數據結構。38整理ppt2.4.1.1棧的定義棧:限定只能在表的一端進行插入和刪除的特殊的線性表,此種結構稱為后進先出設棧s=〔a1,a2,...,ai,...,an〕,其中a1是棧底元素,an是棧頂元素。棧頂〔top):允許插入和刪除的一端;約定top始終指向新數據元素將存放的位置。棧底〔bottom):不允許插入和刪除的一端。a1a2….an進棧出棧棧頂棧底39整理ppt隊列的主要運算〔1〕設置一個空隊列;〔2〕插入一個新的隊尾元素,稱為進隊;〔3〕刪除隊頭元素,稱為出隊;〔4〕讀取隊頭元素;2.4.1.2隊列的定義定義:一種特殊的線性結構,限定只能在表的一端進行插入,在表的另一端進行刪除的線性表。此種結構稱為先進先出〔FIFO〕表。a1,

a2,

a3,

a4,…………

an-1,

an

隊列示意圖隊頭隊尾40整理ppt2.4.2棧的順序存儲結構及其根本運算a2a1a1a2top

用順序存儲結構表示的棧。

順序棧用一組連續的存儲單元存放自棧底到棧頂的數據元素,一般用一維數組表示,設置一個簡單變量top指示棧頂位置,稱為棧頂指針,它始終指向待插入元素的位置。根本運算:壓〔進〕棧:PUSH出棧:POP41整理ppt

3210(a)rear=front=-1(隊空)e3e4(c)e1,e2出隊,e4入隊

隊滿rear=4fronte1e2e3

(b)rearfront(b)e1,e2,e3入隊隊空時,令rear=front=-1,當有新元素入隊時,尾指針加1,當有元素出隊時,頭指針加1。故在非空隊列中,頭指針始終指向隊頭元素前一個位置,而尾指針始終指向隊尾元素的位置2.4.3隊列的順序存儲結構及其根本運算42整理ppt例題講解43整理ppt棧和隊列的共同特點是A)都是先進先出B)都是先進后出C)只允許在端點處插入和刪除元素D)沒有共同點如果進棧序列為e1,e2,e3,e4,那么可能的出棧序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1C)e3,e4,e1,e2 D)任意順序一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調用。而實現遞歸調用中的存儲分配通常用A)棧 B)堆C)數組 D)鏈表44整理ppt棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,那么出棧序列可能是A)ABCED B)DCBEAC)DBCEA D)CDABE棧通常采用的兩種存儲結構是A)線性存儲結構和鏈表存儲結構 B)散列方式和索引方式C)鏈表存儲結構和數組D)線性存儲結構和非線性存儲結構棧和隊列通常采用的存儲結構是【1】。以下數據結構中,按先進后出原那么組織數據的是A)線性鏈表B)棧C)循環鏈表 D)順序表45整理ppt由兩個棧共享一個存儲空間的好處是A)減少存取時間,降低下溢發生的機率B)節省存儲空間,降低上溢發生的機率C)減少存取時間,降低上溢發生的機率D)節省存儲空間,降低下溢發生的機率以下關于棧的表達中正確的選項是A〕在棧中只能插入數據B〕在棧中只能刪除數據C〕棧是先進先出的線性表D〕棧是后進先出的線性表以下關于隊列的表達中正確的選項是A〕在隊列中只能插入數據B〕在隊列中只能刪除數據C〕隊列是先進先出的線性表D〕隊列是后進先出的線性表46整理ppt2.5鏈表線性單鏈表雙向鏈表循環鏈表結構及其根本運算47整理ppt2.5.1線性表的鏈式存儲結構

將線性表的元素放到一個具有頭指針的鏈表中,鏈表中每個結點包含數據域和指針域。

數據域存放數據,指針域存放后繼結點的地址,最后一個結點的指針域為空。邏輯上相鄰的數據元素在內存中的物理存儲空間不一定相鄰。48整理ppt上圖的線性表為ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG49整理ppt線性鏈表表示法:50整理ppt鏈式存儲結構的特點

插入、刪除靈活方便,不需要移動結點,只要改變結點中指針域的值即可。適合于線性表是動態變化的,不進行頻繁查找操作、但經常進行插入刪除時使用。

鏈表的查找只能從頭指針開始順序查找。

51整理ppta1a2an∧a3L…..線性表的鏈式存儲結構可用C語言中的“結構指針〞來描述帶頭結點的線性鏈表datanexttypedefstructLNode{intdata;StructLNode*next;}JD;52整理pptbabaxPP單鏈表的插入運算S在P所指向的結點之后插入新的結點53整理pptbabax∧anaia1a2PPai-1xL單鏈表的插入運算S54整理pptai-1a1aiai+1Lp單鏈表的刪除運算ai-1a1aiai+1Lpq刪除p指針指向結點的后一個結點q指向p的后繼結點2.修改p結點的指針域3.刪除并釋放結點ai-1a1aiai+1Lpq55整理pptvoidlbsc(JD*p)/*刪除p指針指向結點的后一個結點*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結點*/

p->next=q->next;/*修改p結點的指針域*/free(q);/*刪除并釋放結點*/}}單鏈表的刪除運算56整理ppt線性鏈表的查找操作:設無表頭結點的線性鏈表的頭指針為h,沿著鏈表的開始往后找結點x,假設找到,那么返回該結點在鏈表中的位置,否那么返回空地址。JD*lbcz(JD*h,intx){JD*p;p=h;while(p!=NULL&&p->data!=x)p=p->next;return(p);}57整理ppt2.5.2循環鏈表:

首尾相接的鏈表。將最后一個結點的空指針改為指向頭結點,從任一結點出發均可找到其它結點。a1a2an∧a3L…..帶頭結點的單鏈表a1a2ana3L…..循環單鏈表58整理ppt2.5.3雙向鏈表在每個結點中設置兩個指針,一個指向后繼,一個指向前驅。可直接確定一個結點的前驅和后繼結點。可提高效率。datanextbefore59整理ppt例題講解60整理ppt用鏈表表示線性表的優點是

A)便于隨機存取B)花費的存儲空間較順序存儲少

C)便于插入和刪除操作D)數據元素的物理順序與邏輯順序相同在單鏈表中,增加頭結點的目的是

A)方便運算的實現

B)使單鏈表至少有一個結點

C)標識表結點中首結點的位置

D)說明單鏈表是線性表的鏈式存儲實現61整理ppt非空的循環單鏈表head的尾結點(由p所指向),滿足A)p->next==NULL B)p==NULLC)p->next=head D)p=head循環鏈表的主要優點是A)不再需要頭指針了B)從表中任一結點出發都能訪問到整個鏈表C)在進行插入、刪除運算時,能更好的保證鏈表不斷開D)某個結點的位置后,能夠容易的找到它的直接前件62整理ppt2.6樹樹的根本概念二叉樹的定義及其存儲結構二叉樹的前序、中序和后序遍歷63整理ppt2.6.1樹的定義由一個或多個結點組成的有限集合。僅有一個根結點,結點間有明顯的層次結構關系。

A

C

GT2D

HIT3J

M

BEL

KT1F現實世界中,能用樹的結構表示的例子:學校的行政關系、書的層次結構、人類的家族血緣關系等。64整理ppt介紹幾個概念:結點〔Node〕:樹中的元素,包含數據項及假設干指向其子樹的分支。結點的度〔Degree〕:結點擁有的子樹數。結點的層次:從根結點開始算起,根為第一層。葉子〔Leaf〕:度為零的結點,也稱端結點。孩子〔Child〕:結點子樹的根稱為該結點的孩子結點。兄弟〔Sibling〕:同一雙親的孩子。雙親〔Parent〕:孩子結點的上層結點,稱為這些結點的雙親。深度〔Depth):樹中結點的最大層次數。森林〔Forest〕:M棵互不相交的樹的集合。

A

C

GT2D

HIT3J

M

BEL

KT1F65整理ppt2.6.2二叉樹〔BinaryTree〕1、二叉樹的定義及其性質

(1)二叉樹的定義二叉樹的五種根本形態二叉樹一種特殊的樹型結構,特點是樹中每個結點只有兩棵子樹,且子樹有左右之分,次序不能顛倒。

空二叉樹

僅有根結點

右子樹為空

左子樹為空左右子樹均非空因為樹的每個結點的度不同,存儲困難,使對樹的處理算法很復雜。所以引出二叉樹的討論。66整理ppt二叉數是n(n

0)個結點的有限集合。它或為空數(n=0),或由一個根結點和兩棵分別稱為根的左子樹和右子樹的互不相交的二叉樹組成。

特別要注意:二叉數不是樹的特殊情況。aabb兩棵不同的二叉數67整理pptA、二叉樹的第i層上至多有2i-1〔i1〕個結點。(2)二叉樹的根本性質423167891011121314155第三層上(i=3),有23-1=4個節點。第四層上(i=4),有24-1=8個節點。68整理pptA、二叉樹的第i層上至多有2i-1〔i1〕個結點。B、深度為h的二叉樹中至多含有2h-1個結點。(2)二叉樹的根本性質423167891011121314155此樹的深度h=4,共有24-1=15個節點。69整理pptA、二叉樹的第i層上至多有2i-1〔i1〕個結點。B、深度為h的二叉樹中至多含有2h-1個結點。C、假設在任意一棵二叉樹中,有n0個葉子結點,有n2個度為2的結點,那么:n0=n2+1(2)二叉樹的根本性質423167891011121314155n0=8n2=770整理ppt〔3〕滿二叉樹423167891011121314155特點:每一層上都含有最大結點數。71整理ppt423167891011125

非完全二叉樹〔4〕完全二叉樹423167891011125

完全二叉樹特點:除最后一層外,每一層都取最大結點數,最后一層結點都集中在該層最左邊的假設干位置。72整理ppt〔5〕樹與二叉樹的區別A.樹中結點的最大度數沒有限制,二叉樹結點最大度數為2。B.樹的結點無左、右之分,二叉樹的結點子樹有明確的左、右之分。

二叉樹73整理ppt2、二叉樹的存儲結構

(2)鏈式存儲結構T[16]假設父結點在數組中i下標處,其左孩子在2*i處,右孩子在2*i+1處。11ABcFED

●●●●●●●●●124

8

910563712131415(1)順序存儲結構(1)順序存儲結構2h-1=24-1=15用一組連續的存儲單元存放二叉樹的數據元素。結點在數組中的相對位置蘊含著結點之間的關系。0000FE000DC0BA15141312111098765432100一般二叉樹必須按完全二叉樹的形式存儲,將造成存儲的浪費。74整理ppt2.6.3二叉樹的遍歷查找某個結點,或對二叉樹中全部結點進行某種處理,就需要遍歷。〔1〕遍歷定義及遍歷算法遍歷是指按某條搜索路線尋訪樹中每個結點,且每個結點只被訪問一次。按先左后右的原那么,一般使用三種遍歷:先序遍歷(DLR):訪問根結點,按先序遍歷左子樹,按先序遍歷右子樹。中序遍歷(LDR):按中序遍歷左子樹,訪問根結點,按中序遍歷右子樹。后序遍歷(LRD):按后序遍歷左子樹,按后序遍歷右子樹,訪問根結點。二叉樹為空時,執行空操作,即空二叉樹已遍歷完。75整理ppt〔2〕遍歷算法先序遍歷:DLR中序遍歷:LDR后序遍歷:LRDADBCT1T2T3DLRADLRDLR>B>>D>>CDLR以先序遍歷DLR為例演示遍歷過程ABDCBDACDBCA76整理ppt例題講解77整理ppt在深度為7的滿二叉樹中,葉子結點的個數為〔〕(2006.4)A)32 B)31C)64D)63某二叉樹有n個度為2的結點,那么該二叉樹中的葉子節點數為〔〕(2007.4)A)n+1 B)n-1C)2n D)n/2具有3個結點的二叉樹有A)2種形態B)4種形態C)7種形態D)5種形態

78整理ppt設有以下二叉樹:

對此二叉樹前序遍歷的結果為A)ZBTTCPXA B)ATBZXCTPC)ZBTACTXPD)ATBZXCPT79整理ppt設一棵二叉樹中有3個葉子結點,有8個度為1的結點,那么該二叉樹中總的結點數為()A)12 B)13C)14 D)15設有以下二叉樹:對此二叉樹的中序遍歷的結果為A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA80整理ppt2.7查找和排序順序查找與二分查找算法根本排序算法〔交換類排序、選擇類排序、插入類排序〕81整理ppt2.7.1查找查找是在一個給定的數據結構中,根據給定的條件查找滿足條件的結點。不同的數據結構采用不同的查找方法。查找的效率直接影響數據處理的效率。查找的結果:查找成功:找到滿足條件的結點查找失敗:找不到滿足條件的結點。82整理ppt2.7.1.1順序查找〔線性查找〕查找過程:對給定的一關鍵字K,從線性表的一端開始,逐個進行記錄的關鍵字和K的比較,直到找到關鍵字等于K的記錄或到達表的另一端。可以采用從前向后查,也可采用從后向前查的方法。·在平均情況下,大約要與表中一半以上元素進行比較,效率較低。平均查找長度較大。·在下面兩種情況下只能采取順序查找:a.線性表為無序表〔元素排列是無序的〕;b.即使是有序線性表,但采用的是鏈式存儲結構。83整理ppt2.7.1.2折半查找〔二分法查找〕思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認找不到該記錄為止。前提:必須在具有順序存儲結構的有序表中進行。分三種情況:1〕假設中間項的值等于x,那么說明已查到。2〕假設x小于中間項的值,那么在線性表的前半局部查找;3〕假設x大于中間項的值,那么在線性表的后半局部查找。特點:比順序查找方法效率高。最壞的情況下,需要比較log2n次。84整理ppt查找23和79的過程如以下圖:mid=(low+high)/2不進位取整(08,14,23,37,46,55,68,79,91)(08,14,23,37,46,55,68,79,91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhigh=mid-1mid(08,14,23,37,46,55,68,79,91)low=mid+1highmid(08,14,23,37,46,55,68,79,

91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhighmid(08,14,23,37,46,55,68,79,91)lowhighmid85整理ppt2.7.2排序2.7.2.1概述1、排序的功能:將一個數據元素〔或記錄〕的任意序列,重新排成一個按關鍵字有序的序列。2、排序過程的組成步驟:首先比較兩個關鍵字的大小;然后將記錄從一個位置移動到另一個位置。86整理ppt排序方法插入排序選擇排序交換排序歸并排序直接插入排序折半插入排序簡單項選擇擇排序堆排序起泡排序快速排序87整理ppt2.7.2.2插入排序直接插入、折半插入1、直接插入排序:根本思想:從數組的第2號元素開始,順序從數組中取出元素,并將該元素插入到其左端已排好序的數組的適當位置上。需要n(n-1)/2次比較88整理ppt該算法適合于n較小的情況,時間復雜度為O(n2).待排元素序列:[53]2736156942第一次排序:[2753]36156942第二次排序:[273653]156942第三次排序:[15273653]6942第四次排序:[1527365369]42第五次排序:[152736425369]

直接插入排序例如對于有n個數據元素的待排序列,插入操作要進行n-1次89整理ppt2、折半插入排序折半插入排序在尋找插入位置時,不是逐個比較而是利用折半查找的原理尋找插入位置。待排序元素越多,改進效果越明顯。折半插入排序的條件:在有序序列中插入一個關鍵字。90整理ppt例:有6個記錄,前5個已排序的基礎上,對第6個記錄排序。[1527365369]42

low

mid

high

[1527365369]42

low

high

mid

[1527365369]42

high

low[152736425369](high<low,查找結束,插入位置為low或high+1)(42>36)(42<53)91整理ppt1、簡單項選擇擇排序思想:首先從1~n個元素中選出關鍵字最小的記錄交換到第一個位置上。然后再從第2個到第n個元素中選出次小的記錄交換到第二個位置上,依次類推。時間復雜度為O(n2),最壞情況下需要比較n(n-1)/2次適用于待排序元素較少的情況。2.7.2.3選擇排序簡單項選擇擇排序、堆排序92整理ppt初態83916839168391683916ijkijkijkijk1

3986互換ijk1

3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論