




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫第一頁,共四十二頁,2022年,8月28日第一部分
數(shù)據(jù)結(jié)構(gòu)第二頁,共四十二頁,2022年,8月28日教材《數(shù)據(jù)結(jié)構(gòu)(c語言版)》,嚴(yán)蔚敏等編著,清華大學(xué)出版社,1997《數(shù)據(jù)結(jié)構(gòu)題集(c語言版)》,嚴(yán)蔚敏等編著,清華大學(xué)出版社,1999第三頁,共四十二頁,2022年,8月28日參考書《數(shù)據(jù)結(jié)構(gòu)(第二版)》,唐策善、黃劉生編著,中國科大出版社,2001
"DataStructureswithC++",WilliawFordetal.,PrenticeHallInc.,1996."DataStructures&ProgramDesigninC,2ndEd.",RobertKruseetal.,PrenticeHallInc.,1997.
第四頁,共四十二頁,2022年,8月28日什么是數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語抽象數(shù)據(jù)類型算法分析性能分析與度量第一章緒論第五頁,共四十二頁,2022年,8月28日學(xué)生成績表格第六頁,共四十二頁,2022年,8月28日選課單學(xué)號課程號時間成績20001DS2000SX20002001,22000,9788720002ART2000DS20002002,22001,2689020003SX2000DS20002000,92001,2877820004SX2000ART20002000,92002,28976第七頁,共四十二頁,2022年,8月28日UNIX文件系統(tǒng)結(jié)構(gòu)圖/rootbinlibuseretcmathdsswyintaoxieStack.cppQueue.cppTree.cpp第八頁,共四十二頁,2022年,8月28日綜上,描述這類非數(shù)值計(jì)算問題的數(shù)學(xué)模型不是數(shù)學(xué)方程,而是樹、表和圖之類的數(shù)據(jù)結(jié)構(gòu)。因此從廣義上講,數(shù)據(jù)結(jié)構(gòu)描述現(xiàn)實(shí)世界實(shí)體的數(shù)學(xué)模型及其上的操作在計(jì)算機(jī)中的表示和實(shí)現(xiàn).第九頁,共四十二頁,2022年,8月28日信息?數(shù)據(jù)?知識?
?第十頁,共四十二頁,2022年,8月28日基本概念和術(shù)語數(shù)據(jù)(Data)是信息的載體,是描述客觀事物的數(shù)、字符、以及所有能輸入到計(jì)算機(jī)中,被計(jì)算機(jī)程序識別和處理的符號的集合。
數(shù)值性數(shù)據(jù)非數(shù)值性數(shù)據(jù)第十一頁,共四十二頁,2022年,8月28日數(shù)據(jù)元素(DataElement)數(shù)據(jù)的基本單位。在計(jì)算機(jī)程序中常作為一個整體進(jìn)行考慮和處理。有時一個數(shù)據(jù)元素可以由若干數(shù)據(jù)項(xiàng)(DataItem)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。數(shù)據(jù)元素又稱為元素、結(jié)點(diǎn)、記錄第十二頁,共四十二頁,2022年,8月28日數(shù)據(jù)項(xiàng)(DataItem)
學(xué)號姓名出生日期年月日籍貫?zāi)昙壪祫e宿舍號第十三頁,共四十二頁,2022年,8月28日數(shù)據(jù)對象(DataObject)具有相同性質(zhì)的數(shù)據(jù)元素的集合。整數(shù)數(shù)據(jù)對象N={0,1,2,…}字母字符數(shù)據(jù)對象
C={‘A’,‘B’,‘C’,…‘F’}第十四頁,共四十二頁,2022年,8月28日數(shù)據(jù)結(jié)構(gòu)(DataStructure)形式定義:
某一數(shù)據(jù)對象的所有數(shù)據(jù)成員之間的關(guān)系。記為:
Data_Structure={D,S}
其中,D是某一數(shù)據(jù)對象,S是該對象中所有數(shù)據(jù)成員之間的關(guān)系的有限集合。第十五頁,共四十二頁,2022年,8月28日序偶:
一般來說,兩個具有固定次序的客體組成一個序偶,常常表示兩個客體之間的關(guān)系。記作<x,y>。其中的x和y分別稱為第一元素和第二元素。如:“中國地處亞洲”表示為<中國,亞洲>序偶具有確定的次序。
<x,y>=<u,v>,iffx=u,y=v第一元素本身也可是一序偶。這樣,序偶的概念可推廣到n元組。
如:三元組可定義為一序偶<<x,y>,z>第十六頁,共四十二頁,2022年,8月28日關(guān)系:任一序偶的集合確定了一個二元關(guān)系R,R中任一序偶<x,y>可記做xRy。例如,在實(shí)數(shù)中關(guān)系>
可記作
>={<x,y>|x,y是實(shí)數(shù)且x>y}
數(shù)據(jù)結(jié)構(gòu)的一個例子(例1.5)Group=(P,R)
第十七頁,共四十二頁,2022年,8月28日四類基本結(jié)構(gòu)集合線性結(jié)構(gòu)樹形結(jié)構(gòu)網(wǎng)狀結(jié)構(gòu)第十八頁,共四十二頁,2022年,8月28日數(shù)據(jù)的邏輯結(jié)構(gòu)從邏輯關(guān)系上描述數(shù)據(jù),與數(shù)據(jù)的存儲無關(guān);從具體問題抽象出來的數(shù)據(jù)模型;與數(shù)據(jù)元素本身的形式、內(nèi)容無關(guān);與數(shù)據(jù)元素的相對位置無關(guān)。第十九頁,共四十二頁,2022年,8月28日數(shù)據(jù)的邏輯結(jié)構(gòu)分類線性結(jié)構(gòu)
線性表非線性結(jié)構(gòu)
樹圖(或網(wǎng)絡(luò))第二十頁,共四十二頁,2022年,8月28日bindevetclibuser2114131211234678910315871011998745662313155線性結(jié)構(gòu)樹形結(jié)構(gòu)
樹二叉樹二叉排序樹第二十一頁,共四十二頁,2022年,8月28日堆結(jié)構(gòu)123548711102916125643125436113318146651921圖結(jié)構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)第二十二頁,共四十二頁,2022年,8月28日數(shù)據(jù)的存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(又稱映象)。包括數(shù)據(jù)元素的表示和關(guān)系的表示。數(shù)據(jù)元素的表示:位串(元素、結(jié)點(diǎn))關(guān)系的表示
順序映象非順序映象第二十三頁,共四十二頁,2022年,8月28日抽象數(shù)據(jù)類型(AbstractDataType)數(shù)據(jù)類型
定義:一個值的集合和定義在這個值集上的一組操作的總稱。C語言中的基本數(shù)據(jù)類型
intcharfloatdoublevoid整型字符型浮點(diǎn)型雙精度型無值第二十四頁,共四十二頁,2022年,8月28日抽象數(shù)據(jù)類型是指一個數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作數(shù)據(jù)結(jié)構(gòu)+定義在此數(shù)據(jù)結(jié)構(gòu)上的一組操作=抽象數(shù)據(jù)類型例如:矩陣+(求轉(zhuǎn)置、加、乘、 求逆、求特征值) 構(gòu)成一個矩陣的抽象數(shù)據(jù)類型第二十五頁,共四十二頁,2022年,8月28日抽象數(shù)據(jù)類型的描述抽象數(shù)據(jù)類型可用(D,S,P)三元組表示 其中,D是數(shù)據(jù)對象,S是D上的關(guān)系集,P是對D的基本操作集。
ADT抽象數(shù)據(jù)類型名{
數(shù)據(jù)對象:〈數(shù)據(jù)對象的定義〉
數(shù)據(jù)關(guān)系:〈數(shù)據(jù)關(guān)系的定義〉
基本操作:〈基本操作的定義〉 }ADT抽象數(shù)據(jù)類型名第二十六頁,共四十二頁,2022年,8月28日其中,數(shù)據(jù)對象、數(shù)據(jù)關(guān)系用偽碼描述;基本操作定義格式為 基本操作名(參數(shù)表) 初始條件:〈初始條件描述〉
操作結(jié)果:〈操作結(jié)果描述〉基本操作有兩種參數(shù):賦值參數(shù)只為操作提供輸入值;引用參數(shù)以&打頭,除可提供輸入值外,還將返回操作結(jié)果。“初始條件”描述了操作執(zhí)行之前數(shù)據(jù)結(jié)構(gòu)和參數(shù)應(yīng)滿足的條件,若不滿足,則操作失敗,并返回相應(yīng)出錯信息?!安僮鹘Y(jié)果”說明了操作正常完成之后,數(shù)據(jù)結(jié)構(gòu)的變化狀況和應(yīng)返回的結(jié)果。若初始條件為空,則省略之。第二十七頁,共四十二頁,2022年,8月28日抽象數(shù)據(jù)類型的表示和實(shí)現(xiàn)
抽象數(shù)據(jù)類型可以通過固有數(shù)據(jù)類型(高級編程語言中已實(shí)現(xiàn)的數(shù)據(jù)類型)來實(shí)現(xiàn)抽象數(shù)據(jù)類型類class數(shù)據(jù)對象數(shù)據(jù)成員基本操作成員函數(shù)(方法)在C++中,類的成分(數(shù)據(jù)成員和成員函數(shù))可以有三種訪問級別Private私有成分(只允許類的成員函數(shù)進(jìn)行訪問)
protected保護(hù)成分(只允許類的成員函數(shù)及其子孫類進(jìn)行訪問)public公有成分(允許類的成員函數(shù)、類的實(shí)例及其子孫類、子孫類的實(shí)例進(jìn)行訪問)第二十八頁,共四十二頁,2022年,8月28日算法和算法分析定義:為了解決某類問題而規(guī)定的一個有限長的操作序列。特性:有窮性算法在執(zhí)行有窮步后能結(jié)束確定性每步定義都是確切、無歧義可行性每一條運(yùn)算應(yīng)足夠基本輸入有0個或多個輸入輸出有一個或多個輸出第二十九頁,共四十二頁,2022年,8月28日算法設(shè)計(jì)例子:
選擇排序問題:遞增排序解決方案:逐個選擇最小數(shù)據(jù)算法框架:
for(inti=0;i<n-1;i++){
//n-1趟 從a[i]檢查到a[n-1];
若最小整數(shù)在a[k],交換a[i]與a[k];}細(xì)化:SelectSort第三十頁,共四十二頁,2022年,8月28日voidselectSort(inta[],intn){
//對n個整數(shù)a[0],a[1],…,a[n-1]按遞增順序排序
for(inti=0;i<n-1;i++){ intk=i;
for(intj=i+1;j<n;j++)
if(a[j]<a[k])k=j;//從a[i]查到a[n-1],找最小整數(shù),在a[k]
inttemp=a[i];a[i]=a[k];a[k]=temp;}}
第三十一頁,共四十二頁,2022年,8月28日性能分析與度量算法的性能標(biāo)準(zhǔn)正確性可讀性健壯性效率(時間、空間)第三十二頁,共四十二頁,2022年,8月28日算法的事后統(tǒng)計(jì)(后期測試)在算法中的某些部位插裝時間函數(shù)time
(),
測定算法完成某一功能所花費(fèi)時間
doublestart,stop;
time(&start);
intk=seqsearch(a,n,x);
time(&stop);
doublerunTime=stop-start;printf(”%d%d\n",n,runTime);第三十三頁,共四十二頁,2022年,8月28日intseqsearch(inta[],intn,intx){//在a[0],…,a[n-1]中搜索x
inti=0;
while(i<n&&a[i]!=x)
i++;
if(i==n)return
-1;
returni;}
第三十四頁,共四十二頁,2022年,8月28日算法的事前估計(jì)時間復(fù)雜度度量運(yùn)行時間=算法中每條語句執(zhí)行時間之和。每條語句執(zhí)行時間=該語句的執(zhí)行次數(shù)(頻度)*語句執(zhí)行一次所需時間。語句執(zhí)行一次所需時間取決于機(jī)器的指令性能和速度和編譯所產(chǎn)生的代碼質(zhì)量,很難確定。設(shè)每條語句執(zhí)行一次所需時間為單位時間,則一個算法的運(yùn)行時間就是該算法中所有語句的頻度之和。第三十五頁,共四十二頁,2022年,8月28日舉例1矩陣相乘算法
for(i=1;i<=n;++i)//n+1for(j=1;j<=n;++j){//n(n+1)c[i][j]=0;//n2for(k=1;k<=n;++k)//n2(n+1)c[i][j]+=a[i][k]*b[k][j];//n3}
則算法執(zhí)行時間T(n)為所有語句的頻度之和。
T(n)=n+1+n(n+1)+…+n3
=2n3
+3n2+2n+1第三十六頁,共四十二頁,2022年,8月28日漸進(jìn)時間復(fù)雜度
引入“O”記號,以體現(xiàn)隨問題規(guī)模n的增長率。
T(n)=n+1+n(n+1)+…+n3
=2n3
+3n2+2n+1=O(n3),其中n3
為增長最快的項(xiàng)。最壞時間復(fù)雜度vs.平均時間復(fù)雜度
有時算法基本操作重復(fù)執(zhí)行次數(shù)還隨問題的輸入數(shù)據(jù)集不同而不同(如一些排序算法)。這時可分析最壞時間復(fù)雜度(最壞情況下的時間復(fù)雜度)和平均時間復(fù)雜度(平均情況下的時間復(fù)雜度)第三十七頁,共四十二頁,2022年,8月28日
估計(jì)算法時間的通常做法:
根據(jù)問題(或算法類型),從算法中選取一種原操作(指固有數(shù)據(jù)類型的操作)作為基本操作。其重復(fù)執(zhí)行次數(shù)應(yīng)與算法執(zhí)行時間成正比;一般為最深層循環(huán)內(nèi)的語句中的原操作;用該基本操作重復(fù)執(zhí)行的次數(shù)作為算法的時間度量。即統(tǒng)計(jì)包含該操作的所有語句的頻度之和。如:上例中選取乘法為基本操作;算法執(zhí)行時間T(n)則正比于乘法所在語句的
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地理會考卷(一)答案及
- 刷題技巧分享:記者證考試試題及答案
- 如何進(jìn)行珠寶陳列和展示試題及答案
- 4《公民的基本權(quán)利和義務(wù)》教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治六年級上冊統(tǒng)編版
- 實(shí)戰(zhàn)經(jīng)驗(yàn)分享:2024年珠寶鑒定師考試試題及答案
- 2024年資源管理試題及答案
- 2024年創(chuàng)新多媒體設(shè)計(jì)師試題及答案
- 2024年食品安全員考試資料速查試題及答案
- 2024年電網(wǎng)考試分析與總結(jié):試題及答案
- 急診腦出血護(hù)理查房
- 2023年拍賣師考試真題模擬匯編(共469題)
- 礦卡司機(jī)安全教育考試卷(帶答案)
- 四川省2023年高中學(xué)業(yè)水平合格性考試化學(xué)試題(解析版)
- 林業(yè)服務(wù)勞務(wù)承包合同
- 《競爭對手的分析》課件
- 中國食品飲料市場調(diào)研報(bào)告
- 痛風(fēng)中醫(yī)護(hù)理常規(guī)
- 2016-2023年北京電子科技職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年考點(diǎn)試題甄選合集含答案解析
- 腦卒中康復(fù)臨床路徑(PT)
- 虛擬現(xiàn)實(shí)技術(shù)在醫(yī)療領(lǐng)域的應(yīng)用
- 會計(jì)信息系統(tǒng)(本) · 網(wǎng)絡(luò)考試備考資料
評論
0/150
提交評論