電大數(shù)據(jù)結構復習重點歸納小抄參考_第1頁
電大數(shù)據(jù)結構復習重點歸納小抄參考_第2頁
電大數(shù)據(jù)結構復習重點歸納小抄參考_第3頁
電大數(shù)據(jù)結構復習重點歸納小抄參考_第4頁
電大數(shù)據(jù)結構復習重點歸納小抄參考_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、專業(yè)好文檔數(shù)據(jù)結構復習重點歸納一、數(shù)據(jù)結構的章節(jié)結構及重點構成數(shù)據(jù)結構學科的章節(jié)劃分基本上為:概論,線性表,棧和隊列,串,多維數(shù)組和廣義表,樹和二叉樹,圖,查找,內排,外排,文件,動態(tài)存儲分配。對于絕大多數(shù)的學校而言,“外排,文件,動態(tài)存儲分配”三章基本上是不考的,在大多數(shù)高校的計算機本科教學過程中,這三章也是基本上不作講授的。所以,大家在這三章上可以不必花費過多的精力,只要知道基本的概念即可。但是,對于報考名校特別是該校又有在試卷中對這三章進行過考核的歷史,那么這部分朋友就要留意這三章了。按照以上我們給出的章節(jié)以及對后三章的介紹,數(shù)據(jù)結構的章節(jié)比重大致為:概論:內容很少,概念簡單,分數(shù)大多只

2、有幾分,有的學校甚至不考。線性表:基礎章節(jié),必考內容之一??碱}多數(shù)為基本概念題,名??碱}中,鮮有大型算法設計題。如果有,也是與其它章節(jié)內容相結合。棧和隊列:基礎章節(jié),容易出基本概念題,必考內容之一。而棧常與其它章節(jié)配合考查,也常與遞歸等概念相聯(lián)系進行考查。串 :基礎章節(jié),概念較為簡單。專門針對于此章的大型算法設計題很少,較常見的是根據(jù)kmp進行算法分析。多維數(shù)組及廣義表 :基礎章節(jié),基于數(shù)組的算法題也是常見的,分數(shù)比例波動較大,是出題的“可選單元”或“侯補單元”。一般如果要出題,多數(shù)不會作為大題出。數(shù)組常與“查找,排序”等章節(jié)結合來作為大題考查。樹和二叉樹 :重點難點章節(jié),各校必考章節(jié)。各校在

3、此章出題的不同之處在于,是否在本章中出一到兩道大的算法設計題。通過對多所學校的試卷分析,絕大多數(shù)學校在本章都曾有過出大型算法設計題的歷史。圖 :重點難點章節(jié),名校尤愛考。如果作為重點來考,則多出現(xiàn)于分析與設計題型當中,可與樹一章共同構成算法設計大題的題型設計。查找 :重點難點章節(jié),概念較多,聯(lián)系較為緊密,容易混淆。出題時可以作為分析型題目給出,在基本概念型題目中也較為常見。算法設計型題中可以數(shù)組結合來考查,也可以與樹一章結合來考查。排序 :與查找一章類似,本章同屬于重點難點章節(jié),且概念更多,聯(lián)系更為緊密,概念之間更容易混淆。在基本概念的考查中,尤愛考各種排序算法的優(yōu)劣比較此類的題。算法設計大題

4、中,如果作為出題,那么常與數(shù)組結合來考查。二、數(shù)據(jù)結構各章節(jié)重點勾劃:第0章概述本章主要起到總領作用,為讀者進行數(shù)據(jù)結構的學習進行了一些先期鋪墊。大家主要注意以下幾點:數(shù)據(jù)結構的基本概念,時間和空間復雜度的概念及度量方法,算法設計時的注意事項。本章考點不多,只要稍加注意理解即可。第一章線性表作為線性結構的開篇章節(jié),線性表一章在線性結構的學習乃至整個數(shù)據(jù)結構學科的學習中,其作用都是不可低估的。在這一章,第一次系統(tǒng)性地引入鏈式存儲的概念,鏈式存儲概念將是整個數(shù)據(jù)結構學科的重中之重,無論哪一章都涉及到了這個概念??傮w來說,線性表一章可供考查的重要考點有以下幾個方面:1.線性表的相關基本概念,如:前驅

5、、后繼、表長、空表、首元結點,頭結點,頭指針等概念。2.線性表的結構特點,主要是指:除第一及最后一個元素外,每個結點都只有一個前趨和只有一個后繼。3.線性表的順序存儲方式及其在具體語言環(huán)境下的兩種不同實現(xiàn):表空間的靜態(tài)分配和動態(tài)分配。靜態(tài)鏈表與順序表的相似及不同之處。4.線性表的鏈式存儲方式及以下幾種常用鏈表的特點和運算:單鏈表、循環(huán)鏈表,雙向鏈表,雙向循環(huán)鏈表。其中,單鏈表的歸并算法、循環(huán)鏈表的歸并算法、雙向鏈表及雙向循環(huán)鏈表的插入和刪除算法等都是較為常見的考查方式。此外,近年來在不少學校中還多次出現(xiàn)要求用遞歸算法實現(xiàn)單鏈表輸出(可能是順序也可能是倒序)的問題。在鏈表的小題型中,經(jīng)??嫉揭恍?/p>

6、諸如:判表空的題。在不同的鏈表中,其判表空的方式是不一樣的,請大家注意。5.線性表的順序存儲及鏈式存儲情況下,其不同的優(yōu)缺點比較,即其各自適用的場合。單鏈表中設置頭指針、循環(huán)鏈表中設置尾指針而不設置頭指針以及索引存儲結構的各自好處。第二章棧與隊列棧與隊列,是很多學習ds的同學遇到第一只攔路虎,很多人從這一章開始坐暈車,一直暈到現(xiàn)在。所以,理解棧與隊列,是走向ds高手的一條必由之路,。學習此章前,你可以問一下自己是不是已經(jīng)知道了以下幾點:1.棧、隊列的定義及其相關數(shù)據(jù)結構的概念,包括:順序棧,鏈棧,共享棧,循環(huán)隊列,鏈隊等。棧與隊列存取數(shù)據(jù)(請注意包括:存和取兩部分)的特點。2.遞歸算法。棧與遞

7、歸的關系,以及借助棧將遞歸轉向于非遞歸的經(jīng)典算法:n!階乘問題,fib數(shù)列問題,hanoi問題,背包問題,二叉樹的遞歸和非遞歸遍歷問題,圖的深度遍歷與棧的關系等。其中,涉及到樹與圖的問題,多半會在樹與圖的相關章節(jié)中進行考查。3.棧的應用:數(shù)值表達式的求解,括號的配對等的原理,只作原理性了解,具體要求考查此為題目的算法設計題不多。4.循環(huán)隊列中判隊空、隊滿條件,循環(huán)隊列中入隊與出隊算法。如果你已經(jīng)對上面的幾點了如指掌,棧與隊列一章可以不看書了。注意,我說的是可以不看書,并不是可以不作題哦。第三章串經(jīng)歷了棧一章的痛苦煎熬后,終于迎來了串一章的柳暗花明。串,在概念上是比較少的一個章節(jié),也是最容易自學

8、的章節(jié)之一,但正如每個過來人所了解的,kmp算法是這一章的重要關隘,突破此關隘后,走過去又是一馬平川的大好ds山河了,呵呵。串一章需要攻破的主要堡壘有:1.串的基本概念,串與線性表的關系(串是其元素均為字符型數(shù)據(jù)的特殊線性表),空串與空格串的區(qū)別,串相等的條件2.串的基本操作,以及這些基本函數(shù)的使用,包括:取子串,串連接,串替換,求串長等等。運用串的基本操作去完成特定的算法是很多學校在基本操作上的考查重點。3.順序串與鏈串及塊鏈串的區(qū)別和聯(lián)系,實現(xiàn)方式。4.kmp算法思想。kmp中next數(shù)組以及nextval數(shù)組的求法。明確傳統(tǒng)模式匹配算法的不足,明確next數(shù)組需要改進之外。其中,理解算法

9、是核心,會求數(shù)組是得分點。不用我多說,這一節(jié)內容是本章的重中之重。可能進行的考查方式是:求next和nextval數(shù)組值,根據(jù)求得的next或nextval數(shù)組值給出運用kmp算法進行匹配的匹配過程。第四章數(shù)組與廣義表學過程序語言的朋友,數(shù)組的概念我們已經(jīng)不是第一次見到了,應該已經(jīng)“一回生,二回熟”了,所以,在概念上,不會存在太大障礙。但作為考研課程來說,本章的考查重點可能與大學里的程序語言所關注的不太一樣,下面會作介紹。廣義表的概念,是數(shù)據(jù)結構里第一次出現(xiàn)的。它是線性表或表元素的有限序列,構成該結構的每個子表或元素也是線性結構的,所以,這一章也歸入線性結構中。本章的考查重點有:1.多維數(shù)組中

10、某數(shù)組元素的position求解。一般是給出數(shù)組元素的首元素地址和每個元素占用的地址空間并組給出多維數(shù)組的維數(shù),然后要求你求出該數(shù)組中的某個元素所在的位置。2.明確按行存儲和按列存儲的區(qū)別和聯(lián)系,并能夠按照這兩種不同的存儲方式求解1中類型的題。3.將特殊矩陣中的元素按相應的換算方式存入數(shù)組中。這些矩陣包括:對稱矩陣,三角矩陣,具有某種特點的稀疏矩陣等。熟悉稀疏矩陣的三種不同存儲方式:三元組,帶輔助行向量的二元組,十字鏈表存儲。掌握將稀疏矩陣的三元組或二元組向十字鏈表進行轉換的算法。4.廣義表的概念,特別應該明確表頭與表尾的定義。這一點,是理解整個廣義表一節(jié)算法的基礎。近來,在一些學校中,出現(xiàn)了

11、這樣一種題目類型:給出對某個廣義表l若干個求了若干次的取頭和取尾操作后的串值,要求求出原廣義表l。大家要留意。5.與廣義表有關的遞歸算法。由于廣義表的定義就是遞歸的,所以,與廣義表有關的算法也常是遞歸形式的。比如:求表深度,復制廣義表等。這種題目,可以根據(jù)不同角度廣義表的表現(xiàn)形式運用兩種不同的方式解答:一是把一個廣義表看作是表頭和表尾兩部分,分別對表頭和表尾進行操作;二是把一個廣義表看作是若干個子表,分別對每個子表進行操作。第五章樹與二叉樹從對線性結構的研究過度到對樹形結構的研究,是數(shù)據(jù)結構課程學習的一次躍變,此次躍變完成的好壞,將直接關系到你到實際的考試中是否可以拿到高分,而這所有的一切,將

12、最終影響你的專業(yè)課總分。所以,樹這一章的重要性,已經(jīng)不說自明了。總體來說,樹一章的知識點包括:二叉樹的概念、性質和存儲結構,二叉樹遍歷的三種算法(遞歸與非遞歸),在三種基本遍歷算法的基礎上實現(xiàn)二叉樹的其它算法,線索二叉樹的概念和線索化算法以及線索化后的查找算法,最優(yōu)二叉樹的概念、構成和應用,樹的概念和存儲形式,樹與森林的遍歷算法及其與二叉樹遍歷算法的聯(lián)系,樹與森林和二叉樹的轉換。下面我們看一下圖這一章的主要考點以及這些考點的考查方式:1.考查有關圖的基本概念問題:這些概念是進行圖一章學習的基礎,這一章的概念包括:圖的定義和特點,無向圖,有向圖,入度,出度,完全圖,生成子圖,路徑長度,回路,(強

13、)連通圖,(強)連通分量等概念。與這些概念相聯(lián)系的相關計算題也應該掌握。2.考查圖的幾種存儲形式:圖的存儲形式包括:鄰接矩陣,(逆)鄰接表,十字鏈表及鄰接多重表。在考查時,有的學校是給出一種存儲形式,要求考生用算法或手寫出與給定的結構相對應的該圖的另一種存儲形式。3.考查圖的兩種遍歷算法:深度遍歷和廣度遍歷深度遍歷和廣度遍歷是圖的兩種基本的遍歷算法,這兩個算法對圖一章的重要性等同于“先序、中序、后序遍歷”對于二叉樹一章的重要性。在考查時,圖一章的算法設計題常常是基于這兩種基本的遍歷算法而設計的,比如:“求最長的最短路徑問題”和“判斷兩頂點間是否存在長為k的簡單路徑問題”,就分別用到了廣度遍歷和

14、深度遍歷算法。4.生成樹、最小生成樹的概念以及最小生成樹的構造:prim算法和kruskal算法。考查時,一般不要求寫出算法源碼,而是要求根據(jù)這兩種最小生成樹的算法思想寫出其構造過程及最終生成的最小生成樹。5.拓撲排序問題:拓撲排序有兩種方法,一是無前趨的頂點優(yōu)先算法,二是無后繼的頂點優(yōu)先算法。換句話說,一種是“從前向后”的排序,一種是“從后向前”排。當然,后一種排序出來的結果是“逆拓撲有序”的。6.關鍵路徑問題:這個問題是圖一章的難點問題。理解關鍵路徑的關鍵有三個方面:一是何謂關鍵路徑,二是最早時間是什么意思、如何求,三是最晚時間是什么意思、如何求。簡單地說,最早時間是通過“從前向后”的方法

15、求的,而最晚時間是通過“從后向前”的方法求解的,并且,要想求最晚時間必須是在所有的最早時間都已經(jīng)求出來之后才能進行。這個問題拿來直接考算法源碼的不多,一般是要求按照書上的算法描述求解的過程和步驟。在實際設計關鍵路徑的算法時,還應該注意以下這一點:采用鄰接表的存儲結構,求最早時間和最晚時間要采用不同的處理方法,即:在算法初始時,應該首先將所有頂點的最早時間全部置為0。關鍵路徑問題是工程進度控制的重要方法,具有很強的實用性。7.最短路徑問題:與關鍵路徑問題并稱為圖一章的兩只攔路虎。概念理解是比較容易的,關鍵是算法的理解。最短路徑問題分為兩種:一是求從某一點出發(fā)到其余各點的最短路徑;二是求圖中每一對

16、頂點之間的最短路徑。這個問題也具有非常實用的背景特色,一個典型的應該就是旅游景點及旅游路線的選擇問題。解決第一個問題用dijsktra算法,解決第二個問題用floyd算法。注意區(qū)分。第七章查找在不少數(shù)據(jù)結構的教材中,是把查找與排序放入高級數(shù)據(jù)結構中的。應該說,查找和排序兩章是前面我們所學的知識的綜合運用,用到了樹、也用到了鏈表等知識,對這些數(shù)據(jù)結構某一方面的運用就構成了查找和排序?,F(xiàn)實生活中,search幾乎無處不在,特別是現(xiàn)在的網(wǎng)絡時代,萬事離不開search,小到文檔內文字的搜索,大到internet上的搜索,search占據(jù)了我們上網(wǎng)的大部分時間。在復習這一章的知識時,你需要先弄清楚以下

17、幾個概念:關鍵字、主關鍵字、次關鍵字的含義;靜態(tài)查找與動態(tài)查找的含義及區(qū)別;平均查找長度asl的概念及在各種查找算法中的計算方法和計算結果,特別是一些典型結構的asl值,應該記住。在ds的教材中,一般將search分為三類:1st,在順序表上的查找;2nd,在樹表上的查找;3rd,在哈希表上的查找。下面詳細介紹其考查知識點及考查方式:1.線性表上的查找:主要分為三種線性結構:順序表,有序順序表,索引順序表。對于第一種,我們采用傳統(tǒng)查找方法,逐個比較。對于及有序順序表我們采用二分查找法。對于第三種索引結構,我們采用索引查找算法??忌枰⒁膺@三種表下的asl值以及三種算法的實現(xiàn)。其中,二分查找還

18、要特別注意適用條件以及其遞歸實現(xiàn)方法。2.樹表上的查找:這是本章的重點和難點。由于這一節(jié)介紹的內容是使用樹表進行的查找,所以很容易與樹一間的某些概念相混淆。本節(jié)內容與樹一章的內容有聯(lián)系,但也有很多不同,應注意規(guī)納。樹表主要分為以下幾種:二叉排序樹,平衡二叉樹,b樹,鍵樹。其中,尤以前兩種結構為重,也有部分名校偏愛考b樹的。由于二叉排序樹與平衡二叉樹是一種特殊的二叉樹,所以與二叉樹的聯(lián)系就更為緊密,二叉樹一章學好了,這里也就不難了。二叉排序樹,簡言之,就是“左小右大”,它的中序遍歷結果是一個遞增的有序序列。平衡二叉樹是二叉排序樹的優(yōu)化,其本質也是一種二叉排序樹,只不過,平衡二叉樹對左右子樹的深度

19、有了限定:深度之差的絕對值不得大于1。對于二叉排序樹,“判斷某棵二叉樹是否二叉排序樹”這一算法經(jīng)常被考到,可用遞歸,也可以用非遞歸。平衡二叉樹的建立也是一個??键c,但該知識點歸根結底還是關注的平衡二叉樹的四種調整算法,所以應該掌握平衡二叉樹的四種調整算法,調整的一個參照是:調整前后的中序遍歷結果相同。b樹是二叉排序樹的進一步改進,也可以把b樹理解為三叉、四叉.排序樹。除b樹的查找算法外,應該特別注意一下b樹的插入和刪除算法。因為這兩種算法涉及到b樹結點的分裂和合并,是一個難點。b樹是報考名校的同學應該關注的焦點之一。鍵樹也稱字符樹,特別適用于查找英文單詞的場合。一般不要求能完整描述算法源碼,多

20、是根據(jù)算法思想建立鍵樹及描述其大致查找過程。3.基本哈希表的查找算法:哈希一詞,是外來詞,譯自“hash”一詞,意為:散列或雜湊的意思。哈希表查找的基本思想是:根據(jù)當前待查找數(shù)據(jù)的特征,以記錄關鍵字為自變量,設計一個function,該函數(shù)對關鍵字進行轉換后,其解釋結果為待查的地址?;诠1淼目疾辄c有:哈希函數(shù)的設計,沖突解決方法的選擇及沖突處理過程的描述。第八章內部排序內排是ds課程中最后一個重要的章節(jié),建立在此章之上的考題可以有多種類型:填空,選擇,判斷乃至大型算法題。但是,歸結到一點,就是考查你對書本上的各種排序算法及其思想以及其優(yōu)缺點和性能指標(時間復雜度)能否了如指掌。這一章,我們

21、對重點的規(guī)納將跟以上各章不同。我們將從以下幾個側面來對排序一章進行不同的規(guī)納,以期能更全面的理解排序一章的總體結構及各種算法。從排序算法的種類來分,本章主要闡述了以下幾種排序方法:插入、選擇、交換、歸并、計數(shù)等五種排序方法。其中,在插入排序中又可分為:直接插入、折半插入、2路插入、希爾排序。這幾種插入排序算法的最根本的不同點,說到底就是根據(jù)什么規(guī)則尋找新元素的插入點。直接插入是依次尋找,折半插入是折半尋找。希爾排序,是通過控制每次參與排序的數(shù)的總范圍“由小到大”的增量來實現(xiàn)排序效率提高的目的。交換排序,又稱冒泡排序,在交換排序的基礎上改進又可以得到快速排序??焖倥判虻乃枷?,一語以敝之:用中間數(shù)

22、將待排數(shù)據(jù)組一分為二??焖倥判颍谔幚淼摹皢栴}規(guī)?!边@個概念上,與希爾有點相反,快速排序,是先處理一個較大規(guī)模,然后逐漸把處理的規(guī)模降低,最終達到排序的目的。選擇排序,相對于前面幾種排序算法來說,難度大一點。具體來說,它可以分為:簡單選擇、樹選擇、堆排。這三種方法的不同點是,根據(jù)什么規(guī)則選取最小的數(shù)。簡單選擇,是通過簡單的數(shù)組遍歷方案確定最小數(shù);樹選擇,是通過“錦標賽”類似的思想,讓兩數(shù)相比,不斷淘汰較大(?。┱?,最終選出最?。ù螅?shù);而堆排序,是利用堆這種數(shù)據(jù)結構的性質,通過堆元素的刪除、調整等一系列操作將最小數(shù)選出放在堆頂。堆排序中的堆建立、堆調整是重要考點。樹選擇排序,也曾經(jīng)在一些學校中

23、的大型算法題中出現(xiàn),請大家注意。歸并排序,故名思義,是通過“歸并”這種操作完成排序的目的,既然是歸并就必須是兩者以上的數(shù)據(jù)集合才可能實現(xiàn)歸并。所以,在歸并排序中,關注最多的就是2路歸并。算法思想比較簡單,有一點,要銘記在心:歸并排序是穩(wěn)定排序?;鶖?shù)排序,是一種很特別的排序方法,也正是由于它的特殊,所以,基數(shù)排序就比較適合于一些特別的場合,比如撲克牌排序問題等?;鶖?shù)排序,又分為兩種:多關鍵字的排序(撲克牌排序),鏈式排序(整數(shù)排序)?;鶖?shù)排序的核心思想也是利用“基數(shù)空間”這個概念將問題規(guī)模規(guī)范、變小,并且,在排序的過程中,只要按照基排的思想,是不用進行關鍵字比較的,這樣得出的最終序列就是一個有序

24、序列。本章各種排序算法的思想以及偽代碼實現(xiàn),及其時間復雜度都是必須掌握的,學習時要多注意規(guī)納、總結、對比。此外,對于教材中的10.7節(jié),要求必須熟記,在理解的基礎上記憶,這一節(jié)幾乎成為很多學校每年的必考點。數(shù)據(jù)結構復習重點歸納數(shù)據(jù)結構大學教程the complete data structure training course第一章 數(shù)據(jù)結構及其基本概念chapter 1 data structure and its basic concepts1.1什么是數(shù)據(jù)結構(what is data structure)   如果你問一個木匠學徒:你工作的工具要用什么,他可能會回答

25、你:“我只要一把錘子和一個鋸”。但是如果你去問一個老木工或者是大師級的建筑師,他會告訴你“我需要一些精確的工具”。由于計算機所解決的問題都是從生活中抽象出來的問題,其復雜性不言而喻,所以我們需要這樣精確有效的工具去解決現(xiàn)實生活中的復雜問題。算法、數(shù)據(jù)結構、程序設計語言都是這樣的工具。數(shù)據(jù)結構是信息的組織方式。對于相同的算法,用不同的數(shù)據(jù)結構表示其中的抽象數(shù)據(jù)類型會造成不同的執(zhí)行效率。這就有必要研究各種抽象數(shù)據(jù)類型用不同的數(shù)據(jù)結構表示的效率差異,以及其適用場合。一何謂數(shù)據(jù)結構(what is data structure)數(shù)據(jù)結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數(shù)據(jù)

26、的內部構成,即一個數(shù)據(jù)由哪些成分數(shù)據(jù)構成,以什么方式構成,呈什么結構。數(shù)據(jù)結構有邏輯上的數(shù)據(jù)結構和物理上的數(shù)據(jù)結構之分。邏輯上的數(shù)據(jù)結構反映成分數(shù)據(jù)之間的邏輯關系,而物理上的數(shù)據(jù)結構反映成分數(shù)據(jù)在計算機內部的存儲安排。數(shù)據(jù)結構是信息的一種組織方式,好的數(shù)據(jù)結構可以提高算法的效率,它通常與一組算法的集合相對應,通過這組算法集合可以對數(shù)據(jù)結構中的數(shù)據(jù)進行某種操作。從學科角度來講,數(shù)據(jù)結構是一門研究非數(shù)值計算的程序設計問題中計算機的操作對象以及它們之間的關系和操作等等的學科。二數(shù)據(jù)結構學科的研究對象 (the object of data structure research)  &nbs

27、p;數(shù)據(jù)結構作為一門學科,主要研究數(shù)據(jù)的各種邏輯結構和存儲結構,以及對數(shù)據(jù)的各種操作。因此,主要有三個方面的內容:數(shù)據(jù)的邏輯結構;數(shù)據(jù)的物理存儲結構;對數(shù)據(jù)的操作(即算法)。通常,算法的設計取決于數(shù)據(jù)的邏輯結構,算法的實現(xiàn)取決于數(shù)據(jù)的物理存儲結構。數(shù)據(jù)結構的研究不僅涉及到計算機硬件的研究,比如存儲裝置和存取方法,而且解決編譯原理、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)元素在存儲器中的分配問題的重要基礎。1.2 基本概念與學科術語(basic concepts and terminologies)數(shù)據(jù)(data):是一個集合的概念,是對客觀事物的符號表示,在計算機科學中是指所有能被輸入到計算機中,并被計算機

28、處理的符號的總稱。是計算機處理的信息的某種特定的符號表示形式。數(shù)據(jù)元素(data element):是數(shù)據(jù)的基本單位,數(shù)據(jù)中的一個“個體”。又稱為“記錄”或者“表目”。數(shù)據(jù)項(data item):數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)元素是數(shù)據(jù)項的集合。數(shù)據(jù)對象(data object):是性質相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集??偨Y數(shù)據(jù)項組成數(shù)據(jù)元素,數(shù)據(jù)元素組成數(shù)據(jù)對象,數(shù)據(jù)對象組成數(shù)據(jù)數(shù)據(jù)結構(data structure):是相互之間存在一種或多種特定關系的數(shù)據(jù)元素的集合。它包括三個方面:數(shù)據(jù)元素的邏輯結構、存儲結構和相適應的運算(操作)。數(shù)據(jù)元素之間的邏輯關系被稱為數(shù)據(jù)元素的邏輯結構,

29、可以用一個二元組表示:data_structure = (d, s) / data_structure= (data-part, logic-structure-part)這里d是數(shù)據(jù)元素的集合,s是定義在d(或其他集合)上的關系的集合,s = r r : dd.。數(shù)據(jù)的邏輯結構可歸結為以下四類:(1)集合結構結構中的數(shù)據(jù)元素之間除了同屬于一個集合的關系外別無其他關系(2)線性結構結構中的數(shù)據(jù)元素之間存在一個對一個的前趨后繼關系在此種結構下:有且僅有一個元素無前趨元素有且僅有一個元素無后繼元素其余任何一個元素均有且僅有一個前趨有且僅有一個后繼元素。(3)樹形結構結構中的數(shù)據(jù)元素之間存在一個對多

30、個的關系任何一個節(jié)點最多有一個前趨,可以有多個后繼,是一種典型的非線性結構(4)圖狀結構(網(wǎng)狀結構)結構中的數(shù)據(jù)元素之間存在多個對多個的關系這種結構的特征是任何一個元素可以有多個前趨,也可以有多個后繼,是一種多對多的前趨后繼關系  表和樹是最常用的兩種高效數(shù)據(jù)結構,許多高效的算法可以用這兩種數(shù)據(jù)結構來設計實現(xiàn)。表是線性結構的(全序關系),樹(偏序或層次關系)和圖(局部有序(weak/local orders))是非線性結構。數(shù)據(jù)結構在計算機中的表示(又稱為映像)稱為數(shù)據(jù)的存儲結構(物理結構)數(shù)據(jù)結構的物理結構是指邏輯結構的存儲映像(image)。數(shù)據(jù)結構 ds 的物理結構

31、p 對應于從 ds 的數(shù)據(jù)元素到存儲區(qū)m(維護著邏輯結構s)的一個映射:pd,s) - m存儲器模型:一個存儲器 m 是一系列固定大小的存儲單元,每個單元 u 有一個唯一的地址 a(u),該地址被連續(xù)地編碼。每個單元 u 有一個唯一的后繼單元 u=succ(u)。p 的四種基本映射模型:順序(sequential)、鏈接(linked)、索引(indexed)和散列(hashing)映射。因此,我們至少可以得到44種可能的物理數(shù)據(jù)結構:sequential (sets)linked listsindexed treeshashinggraphs 需要指出的是:并不是所有的可能組合都合理。數(shù)據(jù)結

32、構ds上的操作:所有的定義在ds上的操作在改變數(shù)據(jù)元素(節(jié)點)或節(jié)點的域時必須保持ds的邏輯和物理結構。ds上的基本操作:任何其他對ds的高級操作都可以用這些基本操作來實現(xiàn)。最好將ds和他的所有基本操作看作一個整體稱之為模塊(model)。我們可以進一步將該模塊抽象為數(shù)據(jù)類型(其中ds的存儲結構被表示為私有成員,基本操作被表示為公共方法),稱之為adt(即是抽象數(shù)據(jù)類型abstract data type,指一個數(shù)學模型以及定義在該模型上的一組操作)。adt按照其值的不同特性分為下列三種類型:原子類型(atomic data type):變量是不帶結構的,不可分解的。固定聚合類型(fixed-

33、aggregate data type):其值由確定數(shù)目的成分按照某種結構組成可變聚合類型(variable-aggregate data type):值的成分的數(shù)目不確定抽象數(shù)據(jù)類型的描述方法抽象數(shù)據(jù)類型可用(d,s,p)三元組表示其中,d是數(shù)據(jù)對象,s是d上的關系集,p是對d的基本操作集。adt 抽象數(shù)據(jù)類型名 數(shù)據(jù)對象:數(shù)據(jù)對象的定義數(shù)據(jù)關系:數(shù)據(jù)關系的定義基本操作:基本操作的定義 adt 抽象數(shù)據(jù)類型名其中,數(shù)據(jù)對象和數(shù)據(jù)關系的定義用偽碼描述,基本操作的定義格式為基本操作名(參數(shù)表)初始條件:初始條件描述操作結果:操作結果描述   基本操作有兩種參數(shù):賦值參數(shù)只為操

34、作提供輸入值;引用參數(shù)以&打頭, 除可提供輸入值外,還將返回操作結果?!俺跏紬l件”描述了操作執(zhí)行之前數(shù)據(jù)結構和參數(shù)應滿足的條件,若不滿足,則操作失敗,并返回相應出錯信息?!安僮鹘Y果”說明了操作正常完成之后,數(shù)據(jù)結構的變化狀況和應返回的結果。若初始條件為空,則將其省略。需要注意的是:抽象數(shù)據(jù)類型需要通過固有數(shù)據(jù)類型(高級編程語言中已實現(xiàn)的數(shù)據(jù)類型)來實現(xiàn)。   順便提一句,多形數(shù)據(jù)類型(polymorphic data type)是指值的成分不確定的數(shù)據(jù)類型,不過這個不太多見,或者是可以用adt表示,所以我們在今后的章節(jié)再論述。   好的和壞的ds:如果一

35、個ds可以通過某種“線性規(guī)則”被轉化為線性的ds(例如線性表),則稱它為好的ds。好的ds通常對應于好的(高效的)算法。這是由計算機的計算能力決定的,因為計算機本質上只能存取邏輯連續(xù)的內存單元,因此如何沒有線性化的結構邏輯上是不可計算的。比如對一個圖進行操作,要訪問圖的所有結點,則必須按照某種順序來依次訪問所有節(jié)點(要形成一個偏序),必須通過某種方式將圖固有的非線性結構轉化為線性結構才能對圖進行操作。   樹是好的ds它有非常簡單而高效的線性化規(guī)則,因此可以利用樹設計出許多非常高效的算法。樹的實現(xiàn)和使用都很簡單,但可以解決大量特殊的復雜問題,因此樹是實際編程中最重要和最有用

36、的一種數(shù)據(jù)結構。樹的結構本質上有遞歸的性質每一個葉節(jié)點可以被一棵子樹所替代,反之亦然。實際上,每一種遞歸的結構都可以被轉化為(或等價于)樹形結構。說到遞歸在北京大學的數(shù)據(jù)結構課程里面有個老師經(jīng)常說“不懂遞歸就不算北大計算機系的學生”,這樣看來足以從側面說明書的結構的重要性。1.3 算法和算法分析algorithms and algorithm analysis1.3.1算法   所謂算法(algorithm)是對問題求解步驟的一種描述,是指令的有限序列,其中每一條指令表示一個或多個操作。在clrs中是這樣給出算法的定義的:informally, an algorithm i

37、s any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. an algorithm is thus a sequence of computational steps that transform the input into the output.一個算法必須滿足以下五個重要特性:1有窮性 對于任意一組合法輸入值,在執(zhí)行有窮步驟之后一定能結束,即:算法中的每個

38、步驟都能在有限時間內完成;2確定性 對于每種情況下所應執(zhí)行的操作,在算法中都有確切的規(guī)定,使算法的執(zhí)行者或閱讀者都能明確其含義及如何執(zhí)行。并且在任何條件下,算法都只有一條執(zhí)行路徑;3可行性 算法中描述的操作都可以通過已經(jīng)實現(xiàn)的基本操作運算有限次實現(xiàn)之;4有輸入 作為算法加工對象的量值,通常體現(xiàn)為算法中的一組變量。有些輸入量需要在算法執(zhí)行過程中輸入,而有的算法表面上可以沒有輸入,實際上已被嵌入算法之中;5有輸出 它是一組與輸入有確定關系的量值,是算法進行信息加工后得到的結果。1.3.2算法設計的原則設計算法時我們應當嚴格考慮:1正確性(correctness)首先,算法應當滿足以特定的“規(guī)格說明

39、”方式給出的需求。對算法是否“正確”的理解可以有以下四個層次:a程序中不含語法錯誤;b程序對于幾組輸入數(shù)據(jù)能夠得出滿足要求的輸出結果;c程序對于精心選擇的、典型、苛刻的幾組輸入數(shù)據(jù)能夠得出滿足要求的結果;d程序對于一切合法的輸入數(shù)據(jù)都能得出滿足要求的結果;通常以第c層意義的正確性作為衡量一個算法是否合格的標準。因為作為輸入,我們有時候不可能提前做出所有的預期。2. 可讀性(readability)算法主要是為了人的閱讀與交流,其次才是為計算機執(zhí)行。因此算法應該易于人的理解;另一方面,晦澀難讀的程序易于隱藏較多錯誤而難以調試;有些程序設計者總是把自己設計的算法寫的只有自己才能看懂,這樣的算法反而

40、沒有太大的價值。3健壯性(rubustness)當輸入的數(shù)據(jù)非法時,算法應當恰當?shù)刈鞒龇从郴蜻M行相應處理,而不是產(chǎn)生莫名奇妙的輸出結果。這就需要我們一定要充分的考慮異常情況(unexpected exceptions)并且,處理出錯的方法不應是中斷程序的執(zhí)行,而應是返回一個表示錯誤或錯誤性質的值,以便在更高的抽象層次上進行處理。4高效率與低存儲量需求通常,效率指的是算法執(zhí)行時間;存儲量指的是算法執(zhí)行過程中所需的最大存儲空間。兩者都與問題的規(guī)模有關。1.3.3算法效率的衡量方法與準則通常有兩種衡量算法效率的方法:1事后統(tǒng)計法缺點:(1)必須執(zhí)行程序才能進行判斷(2)其它因素(如硬件、軟件環(huán)境)掩

41、蓋算法本質2.事前分析估算法主要是看消耗的時間。和算法執(zhí)行時間相關的因素:1算法選用的策略2問題的規(guī)模3編寫程序的語言4編譯程序產(chǎn)生的機器代碼的質量5計算機執(zhí)行指令的速度一個特定算法的“運行工作量”的大小,只依賴于問題的規(guī)模(通常用整數(shù)量n表示),或者說,它是問題規(guī)模的函數(shù)。假如,隨著問題規(guī)模n的增長,算法執(zhí)行時間的增長率和f(n)的增長率相同,則可記作:t (n) = o(f(n)稱t (n) 為算法的漸近時間復雜度(asymptotic time complexity),簡稱時間復雜度。o是數(shù)量級的符號。下面我們探討一下如何估算算法的時間復雜度算法 = 控制結構 + 原操作(固有數(shù)據(jù)類型的

42、操作)算法的執(zhí)行時間=原操作(i)的執(zhí)行次數(shù)原操作(i)的執(zhí)行時間算法的執(zhí)行時間與原操作執(zhí)行次數(shù)之和成正比我們先介紹一個概念:for(j=1;j =n;+j)for(k=1;k =n;+k)+x;x+=x;語句重復執(zhí)行的次數(shù)被稱為語句的頻度(frequency count)上程序段中+x的語句頻度就是n2。我們經(jīng)常采用:從算法中選取一種對于所研究的問題來說是基本操作的原操作,以該基本操作在算法中重復執(zhí)行的次數(shù)作為算法運行時間的衡量準則。這個原操作多數(shù)情況下是最深層次循環(huán)內的語句中的原操作。例如:for (i=1; i =n; +i)  for (j=1; j =n; +j)

43、        ci,j = 0;       for (k=1; k =n; +k)            ci,j += ai,k*bk,j;該算法的基本操作是乘法操作。時間復雜度為 o(n3)1.3.4算法的存儲空間(memory space for algorithms)算法的空間復雜度s(n) = o(g(n)表示隨著問題規(guī)模n的增大,算法運行所需存儲量的增長率與g(n)的增長率相同。算法的存儲量包括:1輸入數(shù)據(jù)所占空間;2程

44、序本身所占空間;3輔助變量所占空間。若輸入數(shù)據(jù)所占空間只取決與問題本身,和算法無關,則只需要分析除輸入和程序之外的額外空間。若所需額外空間相對于輸入數(shù)據(jù)量來說是常數(shù),則稱此算法為原地工作。winger tuivasa-sheck, who scored two tries in the kiwis 20-18 semi-final win over england, has been passed fit after a lower-leg injury, while slater has been named at full-back but is still recovering from

45、 a knee injury aggravated against usa.both sides boast 100% records heading into the encounter but australia have not conceded a try since josh charnleys effort in their first pool match against england on the opening day.aussie winger jarryd hayne is the competitions top try scorer with nine, close

46、ly followed by tuivasa-sheck with eight.but it is recently named rugby league international federation player of the year sonny bill williams who has attracted the most interest in the tournament so far.the kiwi - with a tournament high 17 offloads - has the chance of becoming the first player to wi

47、n the world cup in both rugby league and rugby union after triumphing with the all blacks in 2011.id give every award back in a heartbeat just to get across the line this weekend, said williams.the (lack of) air up there watch mcayman islands-based webb, the head of fifas anti-racism taskforce, is i

48、n london for the football associations 150th anniversary celebrations and will attend citys premier league match at chelsea on sunday.i am going to be at the match tomorrow and i have asked to meet yaya toure, he told bbc sport.for me its about how he felt and i would like to speak to him first to f

49、ind out what his experience was.uefa hasopened disciplinary proceedings against cskafor the racist behaviour of their fans duringcitys 2-1 win.michel platini, president of european footballs governing body, has also ordered an immediate investigation into the referees actions.cska said they were sur

50、prised and disappointed by toures complaint. in a statement the russian side added: we found no racist insults from fans of cska. baumgartner the disappointing news: mission aborted.the supersonic descent could happen as early as sunda.the weather plays an important role in this mission. starting at

51、 the ground, conditions have to be very calm - winds less than 2 mph, with no precipitation or humidity and limited cloud cover. the balloon, with capsule attached, will move through the lower level of the atmosphere (the troposphere) where our day-to-day weather lives. it will climb higher than the tip of mount everest (5.5 miles/8.85 kilometers), drifting even hig

溫馨提示

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

評論

0/150

提交評論