日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C++學(xué)習(xí)

 instl 2019-08-09

1.數(shù)據(jù)結(jié)構(gòu)的概念和術(shù)語(yǔ)

 

數(shù)據(jù)(Data):是對(duì)客觀事物的符號(hào)表示,是指所有能夠輸入到計(jì)算機(jī)并被計(jì)算機(jī)處理的符號(hào)的總稱;

2大類數(shù)據(jù):數(shù)值數(shù)據(jù)(整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù))與非數(shù)值數(shù)據(jù)(字符、字符串、圖像、聲音);

數(shù)據(jù)元素(Data Element):數(shù)據(jù)的基本單位,在程序中作為一個(gè)整體進(jìn)行考慮和處理;

數(shù)據(jù)項(xiàng):數(shù)據(jù)元素可以由多個(gè)數(shù)據(jù)項(xiàng)組成,是數(shù)據(jù)操作中不可分割的最小單位;

數(shù)據(jù)對(duì)象:是性質(zhì)相同的所有元素的集合,是數(shù)據(jù)的一個(gè)子集;

 

數(shù)據(jù)結(jié)構(gòu):是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素組成的集合,這種關(guān)系被稱為結(jié)構(gòu);

四類基本結(jié)構(gòu):集合(數(shù)據(jù)元素?zé)o序也沒有重復(fù))、線形結(jié)構(gòu)(具有一對(duì)一的關(guān)系,所有元素按照某種次序排列在一個(gè)序列中,元素存在直接后繼和直接前驅(qū))、樹形結(jié)構(gòu)(集合中元素存在一對(duì)多的關(guān)系)、圖狀結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))(集合中的元素存在多對(duì)多的關(guān)系)

直接后繼與直接前驅(qū):線形結(jié)構(gòu)中僅有第一個(gè)元素沒有直接前驅(qū),僅有最后一個(gè)元素沒有直接后繼

邏輯結(jié)構(gòu):Data_Structure = (D, S)

 

物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)):數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示,包括數(shù)據(jù)元素的表示和數(shù)據(jù)關(guān)系的表示

位、元素(節(jié)點(diǎn))、數(shù)據(jù)域:位是數(shù)據(jù)在計(jì)算機(jī)中的二進(jìn)制表示最小單位的一位位,若干位組合形成的一個(gè)位串來(lái)表示一個(gè)完整,又被稱為一個(gè)節(jié)點(diǎn),數(shù)據(jù)項(xiàng)對(duì)應(yīng)為數(shù)據(jù)域;

映像、順序映像和非順序映像:元素節(jié)點(diǎn)是數(shù)據(jù)在計(jì)算機(jī)中的映像,其中借助元素在計(jì)算機(jī)存儲(chǔ)中的相對(duì)位置表示數(shù)據(jù)的關(guān)系稱為順序映像,借助元素存儲(chǔ)地址的指針來(lái)表示數(shù)據(jù)的關(guān)系稱為非順序映像。分別對(duì)應(yīng)于順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

 

數(shù)據(jù)結(jié)構(gòu)研究的三個(gè)方面:數(shù)據(jù)間的固有關(guān)系(邏輯結(jié)構(gòu));數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲(chǔ)方法(存儲(chǔ)結(jié)構(gòu));數(shù)據(jù)在不同結(jié)構(gòu)上的操作與處理(算法)。

2.抽象數(shù)據(jù)類型

2.1數(shù)據(jù)類型

5種數(shù)據(jù)類型:基本類型、構(gòu)造類型、指針類型pointer、引用類型reference、空類型void

4種基本類型:整型(短整型shaort int-2、整型int-4、長(zhǎng)整型long int-4)、字符型char-1、浮點(diǎn)型(單精度型float-4、雙精度型double-8、長(zhǎng)雙精度型long double-8)、布爾類型bool

5種構(gòu)造類型:枚舉類型enum、數(shù)組類型srray、結(jié)構(gòu)體類型struct、聯(lián)合類型union、類類型class

2.2數(shù)據(jù)抽象與抽象數(shù)據(jù)類型

抽象數(shù)據(jù)類型用戶定義用來(lái)表示實(shí)際應(yīng)用問題的數(shù)據(jù)模型

特點(diǎn):使用與實(shí)現(xiàn)分離,實(shí)現(xiàn)封裝和信息隱蔽

3.算法和算法分析

3.1算法

算法:是對(duì)特定問題求解步驟的一種描述,是指令的有限序列

五個(gè)特征:有窮性(有限的步驟與運(yùn)行時(shí)間)、確定性(指令的無(wú)疑義)、可行性(可以通過有限次運(yùn)算得到結(jié)果)、輸入(0個(gè)或多個(gè))、輸出(一個(gè)或多個(gè))

3.2算法設(shè)計(jì)的要求

正確性:不含語(yǔ)法錯(cuò)誤;程序在輸入數(shù)據(jù)后可以得到滿意的結(jié)果;精心選擇的、典型的、苛刻的數(shù)據(jù)輸入可以得到滿意的結(jié)果;一切合法的輸入可以得到滿意的結(jié)果

可讀性:易于理解

健壯性:使對(duì)非法數(shù)據(jù)的處理也可以得到一定的結(jié)果

效率:時(shí)間和存儲(chǔ)空間

3.3算法效率的度量

時(shí)間復(fù)雜度:程序在計(jì)算機(jī)上運(yùn)行時(shí)間的度量;

2種方法:事后統(tǒng)計(jì)方法和事前分析估算方法;

事后統(tǒng)計(jì)方法的2個(gè)缺陷:一是必須提前運(yùn)行程序,二是受到計(jì)算機(jī)硬件和軟件因素影響;

事前分析估算方法的5個(gè)取決因素:?jiǎn)栴}規(guī)模;算法策略;程序編寫的語(yǔ)言;編譯產(chǎn)生機(jī)器代碼的質(zhì)量;機(jī)器執(zhí)行指令的速度;

漸進(jìn)時(shí)間復(fù)雜度:T(N) = O(F(N))

2種表示形式(對(duì)于隨問題規(guī)模變化算法的時(shí)間復(fù)雜度計(jì)算):一種是平均算法時(shí)間復(fù)雜度,另一種是最壞情況時(shí)間復(fù)雜度(一般使用這個(gè))

常見的時(shí)間復(fù)雜度:

1>常量型:O(1);

2>多項(xiàng)式型:O(n)、O(n2)、...、O(nk)

3>對(duì)數(shù)型:O(log2n)、O(2log2n)

4>指數(shù)型:O(2n)、O(en)

常用的時(shí)間復(fù)雜度比較:

時(shí)間復(fù)雜度計(jì)算:只估算到F(n)的最高項(xiàng)的階,既不考慮低階項(xiàng),也不考慮常系數(shù)。

空間復(fù)雜度:算法運(yùn)行使用存儲(chǔ)空間的描述S(n);

原地工作:算法使用的對(duì)輸入數(shù)據(jù)和程序所占之外的額外空間為常數(shù);

4.面向?qū)ο蟾攀?/h2>

4.1面向?qū)ο蟮乃枷?/h4>

基本思想:盡可能運(yùn)用人類的自然思維方式來(lái)建立問題空間的模型,構(gòu)造盡可能直觀、自然的表達(dá)方法求解問題的軟件系統(tǒng);

面向?qū)ο?/strong>=對(duì)象+分類+繼承+消息通信;

4.2面向?qū)ο蟮幕靖拍?/h4>

對(duì)象:現(xiàn)實(shí)世界存在的具體事物,可以是有形物體,也可以是無(wú)形的事物或概念;

對(duì)象=數(shù)據(jù)+動(dòng)作(方法、操作);

對(duì)象的2個(gè)內(nèi)容:屬性行為

對(duì)象的3個(gè)特征:一個(gè)區(qū)別于其他對(duì)象的名字;一組描述它屬性的狀態(tài);一組決定其功能或行為的操作;

對(duì)象3個(gè)特性:模塊的獨(dú)立性、動(dòng)態(tài)的連接性、易維護(hù)性;

 

消息:對(duì)象間交互過程所傳遞的通信信息;

3個(gè)性質(zhì):同一對(duì)象可以接收不同的消息;相同形式的消息可以發(fā)送給不同的對(duì)象產(chǎn)生不同的響應(yīng);消息發(fā)送時(shí)不考慮接收者,接受者可以響應(yīng)消息也可以不響應(yīng);

消息序列:向同一個(gè)對(duì)象發(fā)送的多個(gè)信息或者一個(gè)對(duì)象向外發(fā)出多個(gè)消息;

共有消息:由外界對(duì)象向其發(fā)送的消息稱為共有消息;

私有消息:由對(duì)象向其自身發(fā)送的消息;

3種類型(按功能劃分):返回對(duì)象內(nèi)部狀態(tài)的消息;改變對(duì)象內(nèi)部狀態(tài)的消息;完成特定操作改變系統(tǒng)狀態(tài)的消息;

類:具有相同屬性和系統(tǒng)操作的對(duì)象集合的抽象;

實(shí)例:類所定義的一個(gè)具體對(duì)象;

模板:類可以看做是對(duì)象的模板,抽象地描述了屬于該類的全部對(duì)象的屬性和操作;

4.3面向?qū)ο蟮幕咎卣?/h4>

封裝性:將一段代碼“包裝”起來(lái),應(yīng)用時(shí)只知道這段代碼所能完成的功能,而不必知道該段代碼的具體實(shí)現(xiàn)細(xì)節(jié);

3個(gè)條件:清楚的邊界+預(yù)留的對(duì)外接口+良好的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)隱蔽性

繼承性:子類可以自動(dòng)擁有或共享父類的全部屬性和方法;

4個(gè)優(yōu)點(diǎn):類間清晰的層次關(guān)系;自動(dòng)的屬性和方法共享,提高代碼的復(fù)用性;減少接口,程序更加易于維護(hù);具體功能的擴(kuò)充,細(xì)節(jié)的完善;

多態(tài)性:同一個(gè)名字(函數(shù)或運(yùn)算符)在不同場(chǎng)合具有不同的意義(重載);同一個(gè)界面有多重不同的實(shí)現(xiàn)(虛函數(shù))。分別對(duì)應(yīng)于編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。

4.4面向?qū)ο蟪绦蛟O(shè)計(jì)

面對(duì)過程的程序設(shè)計(jì):程序=數(shù)據(jù)結(jié)構(gòu)+算法,數(shù)據(jù)結(jié)構(gòu)與算法單獨(dú)設(shè)計(jì)

面對(duì)對(duì)象的程序設(shè)計(jì):對(duì)象=數(shù)據(jù)結(jié)構(gòu)+算法,將數(shù)據(jù)結(jié)構(gòu)和算法封裝到對(duì)象內(nèi)部

4.5面向?qū)ο蟮恼Z(yǔ)言

早期:LISP語(yǔ)言,Simula67語(yǔ)言,SmallTal語(yǔ)言,逐漸引入面向?qū)ο蟮囊恍└拍?/p>

C++,Java等等

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多