版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
高等數(shù)據(jù)結(jié)構(gòu)與算法第一頁(yè),共二十六頁(yè),2022年,8月28日教材:數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)嚴(yán)蔚敏清華大學(xué)出版社參考書:數(shù)據(jù)結(jié)構(gòu)——使用C語(yǔ)言朱戰(zhàn)立西安交通大學(xué)出版社數(shù)據(jù)結(jié)構(gòu)與算法齊德昱清華大學(xué)出版社數(shù)據(jù)結(jié)構(gòu)與算法——C++版(第2版)AdamDrozdek清華大學(xué)出版社課程與考試安排:第8、11、12章不作要求有**號(hào)的小節(jié)不作要求期末成績(jī)和平時(shí)成績(jī)各占60%和40%第二頁(yè),共二十六頁(yè),2022年,8月28日第一章緒言1.1.1什么是數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)=數(shù)據(jù)模型+算法程序設(shè)計(jì):為計(jì)算機(jī)處理問(wèn)題編制的一組指令集數(shù)據(jù)模型:現(xiàn)實(shí)問(wèn)題的抽象算法:處理問(wèn)題的策略數(shù)值計(jì)算問(wèn)題——數(shù)學(xué)模型是一組線性或非線性的代數(shù)方程組或微分方程組非數(shù)字計(jì)算問(wèn)題(包括管理、控制、數(shù)據(jù)處理等)——數(shù)學(xué)模型是數(shù)據(jù)結(jié)構(gòu)第三頁(yè),共二十六頁(yè),2022年,8月28日例1書目自動(dòng)檢索系統(tǒng)登錄號(hào):書名:作者名:分類號(hào):出版單位:出版時(shí)間:價(jià)格:書目卡片書目文件按書名按作者名按分類號(hào)索引表線性表第四頁(yè),共二十六頁(yè),2022年,8月28日例2人機(jī)對(duì)奕問(wèn)題樹……..……..…...…...…...…...第五頁(yè),共二十六頁(yè),2022年,8月28日多叉路口交通燈管理問(wèn)題CEDABABACADBABCBDDADBDCEAEBECED圖第六頁(yè),共二十六頁(yè),2022年,8月28日數(shù)據(jù)結(jié)構(gòu)定義:是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象以及它們之間的關(guān)系和操作等等的學(xué)科1.1.2為什么要學(xué)數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)的需要計(jì)算機(jī)專業(yè)基礎(chǔ)課編譯程序、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和大型應(yīng)用程序第七頁(yè),共二十六頁(yè),2022年,8月28日1.1.3學(xué)什么掌握各種類型的數(shù)據(jù)結(jié)構(gòu)掌握查找和排序操作學(xué)會(huì)用算法去處理問(wèn)題學(xué)會(huì)用C語(yǔ)言去實(shí)現(xiàn)算法1.1.4怎么學(xué)重視實(shí)踐環(huán)節(jié),包括編程和上機(jī)第八頁(yè),共二十六頁(yè),2022年,8月28日1.2基本概念和術(shù)語(yǔ)數(shù)據(jù)(data)——所有能輸入到計(jì)算機(jī)中去的描述客觀事物的符號(hào),數(shù)據(jù)是信息的載體數(shù)據(jù)元素(dataelement)——數(shù)據(jù)的基本單位,數(shù)據(jù)中的一個(gè)“個(gè)體”數(shù)據(jù)項(xiàng)(dataitem)——數(shù)據(jù)的最小單位,數(shù)據(jù)元素是數(shù)據(jù)項(xiàng)的組合,有組合項(xiàng)和原子項(xiàng)之分?jǐn)?shù)據(jù)對(duì)象(dataobject)——性質(zhì)相同的數(shù)據(jù)元素的集合,如整數(shù)、所有書目信息等數(shù)據(jù)結(jié)構(gòu)(datastructure)——數(shù)據(jù)元素和數(shù)據(jù)元素關(guān)系的集合,數(shù)據(jù)元素相同而關(guān)系不同的數(shù)據(jù)結(jié)構(gòu)是不同的數(shù)據(jù)結(jié)構(gòu)第九頁(yè),共二十六頁(yè),2022年,8月28日根據(jù)數(shù)據(jù)元素間關(guān)系的基本特性,有四種基本數(shù)據(jù)結(jié)構(gòu)(集合)——數(shù)據(jù)元素間除“同屬于一個(gè)集合”外,無(wú)其它關(guān)系線性結(jié)構(gòu)——一個(gè)對(duì)一個(gè),如線性表、棧、隊(duì)列樹形結(jié)構(gòu)——一個(gè)對(duì)多個(gè),如樹圖狀結(jié)構(gòu)——多個(gè)對(duì)多個(gè),如圖數(shù)據(jù)結(jié)構(gòu)的形式定義為:數(shù)據(jù)結(jié)構(gòu)是一個(gè)二元組
Data_Structures=(D,S)
其中:D是數(shù)據(jù)元素的有限集,
S是D上關(guān)系的有限集。第十頁(yè),共二十六頁(yè),2022年,8月28日數(shù)據(jù)的邏輯結(jié)構(gòu)—只抽象反映數(shù)據(jù)元素的邏輯關(guān)系數(shù)據(jù)的存儲(chǔ)(物理)結(jié)構(gòu)—數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器中的實(shí)現(xiàn)數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)密切相關(guān) 算法設(shè)計(jì) 邏輯結(jié)構(gòu) 算法實(shí)現(xiàn) 存儲(chǔ)結(jié)構(gòu) 存儲(chǔ)結(jié)構(gòu)分為:順序存儲(chǔ)結(jié)構(gòu)——借助元素在存儲(chǔ)器中的相對(duì)位置來(lái)表示數(shù)據(jù)元素間的邏輯關(guān)系鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)——借助指示元素存儲(chǔ)地址的指針表示數(shù)據(jù)元素間的邏輯關(guān)系數(shù)據(jù)元素的實(shí)現(xiàn)數(shù)值"321"可用位串101000001表示,字母"A"可用位串001000001表示關(guān)系的實(shí)現(xiàn)第十一頁(yè),共二十六頁(yè),2022年,8月28日元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存儲(chǔ)地址存儲(chǔ)內(nèi)容Loc(元素i)=Lo+(i-1)*m順序存儲(chǔ)第十二頁(yè),共二十六頁(yè),2022年,8月28日1536元素21400元素11346元素3∧元素41345h存儲(chǔ)地址
存儲(chǔ)內(nèi)容
指針1345
元素1
14001346
元素4∧
…….
……..
…….
1400
元素21536
…….
……..
…….1536
元素31346
鏈?zhǔn)酱鎯?chǔ)
h第十三頁(yè),共二十六頁(yè),2022年,8月28日不同的編程環(huán)境中,數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)可有不同的描述方法:以上用的是計(jì)算機(jī)的編碼及內(nèi)存來(lái)描述還可用高級(jí)程序語(yǔ)言提供的數(shù)據(jù)類型來(lái)描述關(guān)系順序存儲(chǔ)結(jié)構(gòu)
intLong_int[3];[鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
int
*Long_int[3];數(shù)據(jù)元素Long_int[0]=4234;第十四頁(yè),共二十六頁(yè),2022年,8月28日1.3抽象數(shù)據(jù)類型數(shù)據(jù)類型(datatype)——一個(gè)值的集合和定義在此集合上的一組操作的總稱抽象數(shù)據(jù)類型(abstractdatatype,ADT)——一個(gè)數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作抽象不同語(yǔ)言不同處理器相同的數(shù)學(xué)特征(即已定義的數(shù)據(jù)類型)設(shè)計(jì)軟件時(shí)自定義的數(shù)據(jù)類型ADT有兩個(gè)重要特征:數(shù)據(jù)抽象:用ADT描述程序處理的實(shí)體時(shí),強(qiáng)調(diào)的是其本質(zhì)特征和外界使用它的方法數(shù)據(jù)封裝:將實(shí)體的外部特性和其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)分離,并且對(duì)外部用戶隱藏其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)第十五頁(yè),共二十六頁(yè),2022年,8月28日抽象數(shù)據(jù)類型包含定義、表示和實(shí)現(xiàn)三部分。抽象數(shù)據(jù)類型的形式描述為:
ADT=(D,S,P)
其中:D是數(shù)據(jù)對(duì)象,
S是D上的關(guān)系集,
P是D的基本操作集。typedefstruct{intnum;charname[20];floatscore;}STUDENT;STUDENTstu1,stu2,*p;第十六頁(yè),共二十六頁(yè),2022年,8月28日1.抽象數(shù)據(jù)類型的定義ADT形式定義為:
ADT
抽象數(shù)據(jù)類型名{
數(shù)據(jù)對(duì)象:數(shù)據(jù)對(duì)象的定義
數(shù)據(jù)關(guān)系:數(shù)據(jù)關(guān)系的定義
基本操作:基本操作的定義
}
ADT
抽象數(shù)據(jù)類型名
其中,數(shù)據(jù)對(duì)象和數(shù)據(jù)關(guān)系的定義用偽碼描述,基本操作的定義格式為
基本操作名
(參數(shù)表)
初始條件:〈初始條件描述〉
操作結(jié)果:〈操作結(jié)果描述〉
基本操作有兩種參數(shù):賦值參數(shù)只為操作提供輸入值;引用參數(shù)以&打頭,除可提供輸入值外,還將返回操作結(jié)果。
"初始條件"描述了操作執(zhí)行之前數(shù)據(jù)結(jié)構(gòu)和參數(shù)應(yīng)滿足的條件,若不滿足,則操作失敗,并返回相應(yīng)出錯(cuò)信息。若初始條件為空,則可省略之。
"操作結(jié)果"說(shuō)明了操作正常完成之后,數(shù)據(jù)結(jié)構(gòu)的變化狀況和應(yīng)返回的結(jié)果。第十七頁(yè),共二十六頁(yè),2022年,8月28日例:抽象數(shù)據(jù)類型"復(fù)數(shù)"的定義為:ADTComplex{
數(shù)據(jù)對(duì)象:D={e1,e2|e1,e2∈RealSet}
數(shù)據(jù)關(guān)系:R1={<e1,e2>|e1是復(fù)數(shù)的實(shí)部,e2是復(fù)數(shù)的虛部}
基本操作:
InitComplex(&Z,v1,v2)
操作結(jié)果:構(gòu)造復(fù)數(shù)Z,其實(shí)部和虛部分別被賦以參數(shù)v1和v2的值。
DestroyComplex(&Z)
初始條件:復(fù)數(shù)已存在。
操作結(jié)果:復(fù)數(shù)Z被銷毀。
GetReal(Z,&realPart)
初始條件:復(fù)數(shù)已存在。
操作結(jié)果:用realPart返回復(fù)數(shù)Z的實(shí)部值。
GetImag(Z,&ImagPart)
初始條件:復(fù)數(shù)已存在。
操作結(jié)果:用ImagPart返回復(fù)數(shù)Z的虛部值。
Add(z1,z2,&sum)
初始條件:z1,z2是復(fù)數(shù)。
操作結(jié)果:用sum返回兩個(gè)復(fù)數(shù)z1,z2的和值。
}ADTComplex第十八頁(yè),共二十六頁(yè),2022年,8月28日2.抽象數(shù)據(jù)類型的表示和實(shí)現(xiàn)抽象數(shù)據(jù)類型需要通過(guò)高級(jí)編程語(yǔ)言中已經(jīng)實(shí)現(xiàn)的數(shù)據(jù)類型(通常稱之謂固有數(shù)據(jù)類型)來(lái)實(shí)現(xiàn)。第十九頁(yè),共二十六頁(yè),2022年,8月28日例:利用C語(yǔ)言實(shí)現(xiàn)的"復(fù)數(shù)"類型如下描述:
//
存儲(chǔ)結(jié)構(gòu)的定義
typedefstruct{
floatrealpart;
floatimagpart;
}complex;
//
基本操作的函數(shù)原型說(shuō)明
voidAssign(complex&Z,floatrealval,floatimagval);
//
構(gòu)造復(fù)數(shù)Z,其實(shí)部和虛部分別被賦以參數(shù)realval和imagval的值
voidadd(complexz1,complexz2,complex&sum);
//
以sum返回兩個(gè)復(fù)數(shù)z1,z2的和
//
基本操作的實(shí)現(xiàn)
…………
voidadd(complexz1,complexz2,complex&sum)
{//
以sum返回兩個(gè)復(fù)數(shù)z1,z2的和
sum.realpart=z1.realpart+z2.realpart;
sum.imagpart=z1.imagpart+z2.imagpart;
}
…………第二十頁(yè),共二十六頁(yè),2022年,8月28日1.4算法的描述和算法分析簡(jiǎn)介算法(algorithm)—解決某一特定問(wèn)題的具體步驟的描述,是指令的有限序列算法特性—算法的描述—采用類C語(yǔ)言算法的評(píng)價(jià)—衡量算法優(yōu)劣的標(biāo)準(zhǔn)正確性(correctness)可讀性(readability)健壯性(robustness)效率與低存儲(chǔ)量第二十一頁(yè),共二十六頁(yè),2022年,8月28日算法效率——用依據(jù)該算法編制的程序在計(jì)算機(jī)上執(zhí)行所消耗的時(shí)間來(lái)度量
1.事后統(tǒng)計(jì)——利用計(jì)算機(jī)內(nèi)記時(shí)功能,不同算法的程序可以用一組或多組相同的統(tǒng)計(jì)數(shù)據(jù)區(qū)分缺點(diǎn):必須先運(yùn)行依據(jù)算法編制的程序所得時(shí)間統(tǒng)計(jì)量依賴于硬件、軟件等環(huán)境因素,掩蓋算法本身的優(yōu)劣
2.事前分析估計(jì)——一個(gè)高級(jí)語(yǔ)言程序在計(jì)算機(jī)上運(yùn)行所消耗的時(shí)間取決于:依據(jù)的算法選用何種策略問(wèn)題的規(guī)模程序語(yǔ)言編譯程序產(chǎn)生機(jī)器代碼質(zhì)量機(jī)器執(zhí)行指令速度同一個(gè)算法用不同的語(yǔ)言、不同的編譯程序、在不同的計(jì)算機(jī)上運(yùn)行,效率均不同,———所以使用絕對(duì)時(shí)間單位衡量算法效率不合適第二十二頁(yè),共二十六頁(yè),2022年,8月28日時(shí)間復(fù)雜度:基本操作重復(fù)執(zhí)行的次數(shù)的階數(shù)T(n)=O(f(n)),表示隨問(wèn)題規(guī)模n的增大,算法執(zhí)行時(shí)間的增長(zhǎng)率和f(n)的增長(zhǎng)率相同例1:NXN矩陣相乘for(i=1;i<=n;i++)for(j=1;j<=n;j++){c[i][j]=0; for(k=1;k<=n;k++)c[i][j]=c[i][j]+a[i][k]*b[k][j];} 語(yǔ)句的頻度:該語(yǔ)句重復(fù)執(zhí)行的次數(shù)第二十三頁(yè),共二十六頁(yè),2022年,8月28日除特別指明,若算法的執(zhí)行時(shí)間依賴于特定的輸入,則按最壞情況考慮對(duì)時(shí)間復(fù)雜度而言,只需要取最高項(xiàng),并忽略常數(shù)系數(shù)
voidbubble_sort(inta[],intn)
{//將a中整數(shù)序列重新排列成自小至大有序的整數(shù)序列。
for(i=n-1,change=TRUE;i>1&&change;--i){
change=FALSE;
for(j=0;j<i;++j)
if(a[j]>a[j+1])
{w=a[j];a[j]=a[j+1];a[j+1]=w;change=TRUE}
}
}//bubble_sort
算法執(zhí)行次數(shù)隨輸入數(shù)據(jù)不同而不同,概率相等時(shí)考慮平均值,概率不明時(shí)考慮最壞情況。#include<stdio.h>main(){inta[11],i,j,t;pr
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)第一學(xué)年(新聞學(xué))新聞學(xué)專業(yè)基礎(chǔ)綜合測(cè)試試題及答案
- 多源醫(yī)療數(shù)據(jù)整合支持的臨床決策系統(tǒng)
- 2025年高職(文秘)商務(wù)文秘實(shí)務(wù)階段測(cè)試題及答案
- 2025年高職旅游管理(導(dǎo)游業(yè)務(wù)實(shí)操)試題及答案
- 2026年金融風(fēng)控智能SaaS平臺(tái)項(xiàng)目公司成立分析報(bào)告
- 多級(jí)醫(yī)院數(shù)據(jù)協(xié)同的區(qū)塊鏈權(quán)限模型
- 2025年大學(xué)理學(xué)(有機(jī)化學(xué))試題及答案
- 2025年大學(xué)二年級(jí)(藥學(xué))藥物化學(xué)試題及答案
- 2025年高職(體育保健與康復(fù))運(yùn)動(dòng)康復(fù)評(píng)估階段測(cè)試題及答案
- 2025年大學(xué)建筑材料管理(管理技術(shù))試題及答案
- 2.3《河流與湖泊》學(xué)案(第2課時(shí))
- 工地臨建合同(標(biāo)準(zhǔn)版)
- GB/T 46275-2025中餐評(píng)價(jià)規(guī)范
- 2025至2030供水產(chǎn)業(yè)行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025年6月大學(xué)英語(yǔ)四級(jí)閱讀試題及答案
- 神經(jīng)內(nèi)外科會(huì)診轉(zhuǎn)診協(xié)作規(guī)范
- 高中詩(shī)歌手法鑒賞考試題
- 2025年及未來(lái)5年中國(guó)幽門螺桿菌藥物行業(yè)市場(chǎng)調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 設(shè)備安裝安全施工培訓(xùn)課件
- 2025至2030年中國(guó)水泥基滲透結(jié)晶型堵漏材料市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025年高考真題分類匯編必修二 《經(jīng)濟(jì)與社會(huì)》(全國(guó))(原卷版)
評(píng)論
0/150
提交評(píng)論