版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、唐懿芳,數(shù)據(jù)結(jié)構(gòu)與算法---C語言和Java語言描述,,01 學(xué)習數(shù)據(jù)結(jié)構(gòu)的意義,02 數(shù)據(jù)結(jié)構(gòu)的基本概念,03 算法及其描述,針對實際問題,編寫出一個高效率的處理程序,就需要解決如何合理地組織數(shù)據(jù),建立合適的數(shù)據(jù)結(jié)構(gòu),設(shè)計較好的算法,來提高程序執(zhí)行效率這樣的問題。數(shù)據(jù)結(jié)構(gòu)和算法就是在此背景下形成和發(fā)展起來的。,,簡而言之,軟件開發(fā)要多動腦筋、想到好的解決辦法才能更快更好地編寫出效率更高的程序。數(shù)據(jù)結(jié)構(gòu)和算法這門課程的
2、目的正是使學(xué)生更快地編寫出更高效的程序。,后兩個條件比較容易實現(xiàn),而第一個條件則需要花很多時間和精力才能夠達到,而它恰恰是區(qū)分程序設(shè)計人員水平高低的一個重要標志。數(shù)據(jù)結(jié)構(gòu)貫穿程序設(shè)計的始終,缺乏數(shù)據(jù)結(jié)構(gòu)和算法的功底,很難設(shè)計出高水平的具有專業(yè)水準的應(yīng)用程序。瑞士著名的計算機科學(xué)家尼古拉斯·沃思(Niklaus·Wirth)提出了“算法+數(shù)據(jù)結(jié)構(gòu)=程序”的觀點,這正說明了數(shù)據(jù)結(jié)構(gòu)的重要性。,即使是在廣泛采用可視化程序設(shè)
3、計的今天,借助于集成開發(fā)環(huán)境可以很快地生成程序,但要想成為一個專業(yè)的程序開發(fā)人員,至少需要以下三個條件:(1)能夠熟練地選擇和設(shè)計各種業(yè)務(wù)邏輯的數(shù)據(jù)結(jié)構(gòu)和算法。(2)至少能夠熟練地掌握一門程序設(shè)計語言。(3)熟知所涉及的相關(guān)應(yīng)用領(lǐng)域知識。,,1.1.1 引言,2 邏輯結(jié)構(gòu)的延伸及基本算法3.物理結(jié)構(gòu)4.運算集合(基本操作),1.邏輯結(jié)構(gòu) (1) 線性結(jié)構(gòu)。結(jié)構(gòu)中的數(shù)據(jù)元素之間存在著一對一的線性關(guān)系。 (2) 樹結(jié)構(gòu)。結(jié)
4、構(gòu)中的數(shù)據(jù)元素之間存在著一對多的層次關(guān)系。 (3) 圖結(jié)構(gòu)。結(jié)構(gòu)中的數(shù)據(jù)元素之間存在著多對多的任意關(guān)系。,,1.1.2 數(shù)據(jù)結(jié)構(gòu)研究什么,線性結(jié)構(gòu):除第一個和最后一個數(shù)據(jù)元素外,每個數(shù)據(jù)元素只有一個前驅(qū)和一個后繼數(shù)據(jù)元素。,樹結(jié)構(gòu):除根結(jié)點外,每個數(shù)據(jù)元素只有一個前驅(qū)數(shù)據(jù)元素,可有0個或若干個后繼數(shù)據(jù)元素。,圖結(jié)構(gòu):每個數(shù)據(jù)元素可有0個或若干個前驅(qū)數(shù)據(jù)元素和0個或若干個后繼數(shù)據(jù)元素。,,01 學(xué)習數(shù)據(jù)結(jié)構(gòu)的意義,02 數(shù)
5、據(jù)結(jié)構(gòu)的基本概念,03 算法及其描述,例如,學(xué)生信息可包括學(xué)生的學(xué)號、姓名、性別、年齡等數(shù)據(jù)。這些數(shù)據(jù)構(gòu)成學(xué)生情況的描述的數(shù)據(jù)項;包括學(xué)號、姓名、性別、年齡等數(shù)據(jù)項的一組數(shù)據(jù)就構(gòu)成學(xué)生信息的一個數(shù)據(jù)元素。,數(shù)據(jù):人們利用文字符號、數(shù)字符號以及其他規(guī)定的符號對現(xiàn)實世界的事物及其活動所做的抽象描述。數(shù)據(jù)元素:表示一個事物的一組數(shù)據(jù)。數(shù)據(jù)項:構(gòu)成數(shù)據(jù)元素的數(shù)據(jù)。抽象數(shù)據(jù)元素:沒有實際含義的數(shù)據(jù)元素。抽象數(shù)據(jù)元素的數(shù)據(jù)類型:沒有確
6、切定義的數(shù)據(jù)類型。數(shù)據(jù)的邏輯結(jié)構(gòu):數(shù)據(jù)元素之間的相互聯(lián)系方式。 數(shù)據(jù)的存儲結(jié)構(gòu):數(shù)據(jù)元素在計算機中的存儲方式。數(shù)據(jù)的操作:對一種數(shù)據(jù)類型的數(shù)據(jù)進行的某種處理。數(shù)據(jù)的操作集合:對一種數(shù)據(jù)類型的數(shù)據(jù)進行的所有操作。,基本術(shù)語,順序存儲結(jié)構(gòu):把數(shù)據(jù)元素存儲在一塊連續(xù)地址空間的內(nèi)存中,其特點是邏輯上相鄰的數(shù)據(jù)元素在物理上也相鄰,數(shù)據(jù)間的邏輯關(guān)系表現(xiàn)在數(shù)據(jù)元素存儲位置關(guān)系上。,指針是指向物理存儲單元地址的變量。由數(shù)據(jù)元素域和指針域組成的一
7、個結(jié)構(gòu)體稱為結(jié)點。,鏈式存儲結(jié)構(gòu):使用指針把相互直接關(guān)聯(lián)的結(jié)點(即直接前驅(qū)結(jié)點或直接后繼結(jié)點)鏈接起來,其特點是邏輯上相鄰的數(shù)據(jù)元素在物理上不一定相鄰,數(shù)據(jù)間的邏輯關(guān)系表現(xiàn)在結(jié)點的鏈接關(guān)系上。,順序存儲結(jié)構(gòu),鏈式存儲結(jié)構(gòu),從抽象角度,數(shù)據(jù)的操作主要討論某種數(shù)據(jù)類型數(shù)據(jù)應(yīng)具備的操作的邏輯功能,抽象角度下的操作一般和數(shù)據(jù)的邏輯結(jié)構(gòu)一起討論;,具體來說,數(shù)據(jù)的操作主要討論操作的具體實現(xiàn)算法。具體問題的操作實現(xiàn)必須在數(shù)據(jù)的存儲結(jié)構(gòu)確定后才能進行
8、。,數(shù)據(jù)結(jié)構(gòu)課程主要討論線性表、堆棧、隊列、串、數(shù)組、樹、二叉樹、圖等典型的常用數(shù)據(jù)結(jié)構(gòu)。在討論這些典型數(shù)據(jù)結(jié)構(gòu)時,主要從它們的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)操作三個方面進行分析討論。,,01 學(xué)習數(shù)據(jù)結(jié)構(gòu)的意義,02 數(shù)據(jù)結(jié)構(gòu)的基本概念,03 算法及其描述,,算法是描述求解問題方法的操作步驟集合。,文字形式 : 用中文或英文這樣的文字來描述算法。偽碼形式 : 用一種仿程序設(shè)計語言的語言來描述算法。程序設(shè)計語言形式 :
9、用某種程序設(shè)計語言描述算法。其優(yōu)點是算法不用修改,直接作為程序語句鍵入計算機,計算機能調(diào)用和運行。,1.3.1 算法的概念和特定,,算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。此外,一個算法還具有下列五個重要特性 :,有窮性 確定性 可行性 輸入 輸出,現(xiàn)在,品牌忠誠度成為最熱門的詞,消費者的“情感”被當作品牌要攻陷的最后堡壘。于是品牌整合營銷、客戶關(guān)系管理等成為了鞏固
10、品牌的熱門手段,精耕細作、不盲目追求銷售量的提升速度是這個階段的特征。,1.3.2 算法設(shè)計的要求,,算法設(shè)計的好壞關(guān)乎程序的執(zhí)行效率,算法設(shè)計必須滿足以下要求:,正確性 可讀性 健壯性 效率與低存儲量需求,現(xiàn)在,品牌忠誠度成為最熱門的詞,消費者的“情感”被當作品牌要攻陷的最后堡壘。于是品牌整合營銷、客戶關(guān)系管理等成為了鞏固品牌的熱門手段,精耕細作、不盲目追求銷售量的提升速度是這個階段的特征。,1.3.3 算法的分析,,1.
11、算法效率的度量 算法執(zhí)行的時間是其對應(yīng)的程序在計算機上運行所消耗的時間。程序在計算機上運行所需時間與下列因素有關(guān):算法本身選用的策略;書寫程序的語言;編譯產(chǎn)生的機器代碼質(zhì)量;機器執(zhí)行指令的速度;,1.3.3 算法的分析,,2. 算法的時間復(fù)雜度可用算法中語句的執(zhí)行次數(shù)來度量一個算法的效率。語句頻度是指語句在一個算法中重復(fù)執(zhí)行的次數(shù)。以下給出了兩個n×n階矩陣相乘算法中的各條語句以及每條語句的語句頻度。
12、 語句 語句頻度 for(i=0;i< n;i++) n+1 for (j=0;j<n;j++) n2+n {c[i][j]=0; n2
13、 for (k=0;k< n; k++) n3+n2 c[i][j]=c[i][j]+a[i][k]*b[k][j]; n3 },1.3.3 算法的分析,,所有語句的總執(zhí)行次數(shù)為Tn=2n3+3n2 +2n+1, 即語句總的執(zhí)行次數(shù)是問題的規(guī)模(矩陣的階)n的函數(shù)f(n)(Tn= f(n))。 上式是Tn= f(n
14、)中忽略其系數(shù)的n的最高冪次項,它表示隨問題規(guī)模n的增大算法的執(zhí)行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間復(fù)雜度,簡稱時間復(fù)雜度。如上算法的時間復(fù)雜度T(n)=O(n3)。 算法中n的最高次冪項與算法中稱作原操作的語句的語句頻度對應(yīng),原操作是算法中實現(xiàn)基本運算的操作,在上面的算法中的原操作是c[i][j]=c[i][j]+a[i][k]*b[k][j]。一般情況下原操作由最深層循環(huán)內(nèi)的語句實現(xiàn)。
15、 算法的時間復(fù)雜度記作: T(n)=O(f(n)),1.3.3 算法的分析,,T(n)隨n的增大而增大,增長的越慢,其算法的時間復(fù)雜度越低。下列三個程序段中分別給出了原操作count++的三個不同數(shù)量級的時間復(fù)雜度。(1)count++ ;其時間復(fù)雜度為O(1) ,稱之為常量階時間復(fù)雜度(2)for (i=1; i<= n; i++)
16、 count++; 其時間復(fù)雜度為O(n),是線性階時間復(fù)雜度 (3)for (i=1; i<= n; i++) for (j=1;j<= n; j++) count++; 其時間復(fù)雜度為O(n2),平方階時間復(fù)雜度此外,算法能呈現(xiàn)的時間復(fù)雜度還有:對數(shù)階O(log2n),指數(shù)階O(2n)等,1.3.3 算法的分析,,常見的時
17、復(fù)雜度O(1) 常數(shù)階、O(n)線性階、O(n2)平方階、O(n3)立方階、O(2n)指數(shù)階、O(log2n)對數(shù)階與O(nlog2n)。時間復(fù)雜度(從小到大排列)的比較如表1.2所示 :,1.3.3 算法的分析,,3.算法的空間復(fù)雜度 采用空間復(fù)雜度作為算法所需存儲空間的量度,記作: S(n)=O(f (n))其中n為問題的規(guī)模。 程序執(zhí)行時,除了需存儲本身所用的指令,常數(shù)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)與算法——c語言和java語言描述 ppt及答案和其他資源03棧和隊列
- 數(shù)據(jù)結(jié)構(gòu)與算法分析—c語言描述課后答案2
- 《數(shù)據(jù)結(jié)構(gòu)——c語言描述》習題及答案-耿國華
- 數(shù)據(jù)結(jié)構(gòu)c語言描述習題及答案耿國華
- 數(shù)據(jù)結(jié)構(gòu)用c語言描述課后習題答案
- 數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用c++語言描述習題參考答案doc
- 數(shù)據(jù)結(jié)構(gòu)算法與應(yīng)用-c++語言描述(清晰版)
- 數(shù)據(jù)結(jié)構(gòu)的c語言算法
- 課程設(shè)計-- 數(shù)據(jù)結(jié)構(gòu)—用c語言描述
- 譚浩強c語言_數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)c語言經(jīng)典題庫含答案
- c語言與數(shù)據(jù)結(jié)構(gòu)考試大綱
- 數(shù)據(jù)結(jié)構(gòu)(c語言)【經(jīng)典題庫】含答案
- 數(shù)據(jù)結(jié)構(gòu)c語言版
- 數(shù)據(jù)結(jié)構(gòu)(c語言版)
- c語言(數(shù)據(jù)結(jié)構(gòu))-文章編輯系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)習題解析-面向?qū)ο蠓椒ê蚦++語言描述-殷人昆
- 數(shù)據(jù)結(jié)構(gòu)鏈表c語言實現(xiàn)
- c語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)c語言版試題大全(含答案)
評論
0/150
提交評論