數據(Data):是對客觀(guān)事物的符號表示,是指所有能夠輸入到計算機并被計算機處理的符號的總稱(chēng);
2大類(lèi)數據:數值數據(整數、浮點(diǎn)數、復數)與非數值數據(字符、字符串、圖像、聲音);
數據元素(Data Element):數據的基本單位,在程序中作為一個(gè)整體進(jìn)行考慮和處理;
數據項:數據元素可以由多個(gè)數據項組成,是數據操作中不可分割的最小單位;
數據對象:是性質(zhì)相同的所有元素的集合,是數據的一個(gè)子集;
數據結構:是相互之間存在一種或多種特定關(guān)系的數據元素組成的集合,這種關(guān)系被稱(chēng)為結構;
四類(lèi)基本結構:集合(數據元素無(wú)序也沒(méi)有重復)、線(xiàn)形結構(具有一對一的關(guān)系,所有元素按照某種次序排列在一個(gè)序列中,元素存在直接后繼和直接前驅?zhuān)?、?shù)形結構(集合中元素存在一對多的關(guān)系)、圖狀結構(網(wǎng)狀結構)(集合中的元素存在多對多的關(guān)系)
直接后繼與直接前驅?zhuān)?/strong>線(xiàn)形結構中僅有第一個(gè)元素沒(méi)有直接前驅?zhuān)瑑H有最后一個(gè)元素沒(méi)有直接后繼
邏輯結構:Data_Structure = (D, S)
物理結構(存儲結構):數據結構在計算機中的表示,包括數據元素的表示和數據關(guān)系的表示
位、元素(節點(diǎn))、數據域:位是數據在計算機中的二進(jìn)制表示最小單位的一位位,若干位組合形成的一個(gè)位串來(lái)表示一個(gè)完整,又被稱(chēng)為一個(gè)節點(diǎn),數據項對應為數據域;
映像、順序映像和非順序映像:元素節點(diǎn)是數據在計算機中的映像,其中借助元素在計算機存儲中的相對位置表示數據的關(guān)系稱(chēng)為順序映像,借助元素存儲地址的指針來(lái)表示數據的關(guān)系稱(chēng)為非順序映像。分別對應于順序存儲結構和鏈式存儲結構。
數據結構研究的三個(gè)方面:數據間的固有關(guān)系(邏輯結構);數據在計算機內部的存儲方法(存儲結構);數據在不同結構上的操作與處理(算法)。
5種數據類(lèi)型:基本類(lèi)型、構造類(lèi)型、指針類(lèi)型pointer、引用類(lèi)型reference、空類(lèi)型void
4種基本類(lèi)型:整型(短整型shaort int-2、整型int-4、長(cháng)整型long int-4)、字符型char-1、浮點(diǎn)型(單精度型float-4、雙精度型double-8、長(cháng)雙精度型long double-8)、布爾類(lèi)型bool
5種構造類(lèi)型:枚舉類(lèi)型enum、數組類(lèi)型srray、結構體類(lèi)型struct、聯(lián)合類(lèi)型union、類(lèi)類(lèi)型class
抽象數據類(lèi)型用戶(hù)定義用來(lái)表示實(shí)際應用問(wèn)題的數據模型
特點(diǎn):使用與實(shí)現分離,實(shí)現封裝和信息隱蔽
算法:是對特定問(wèn)題求解步驟的一種描述,是指令的有限序列
五個(gè)特征:有窮性(有限的步驟與運行時(shí)間)、確定性(指令的無(wú)疑義)、可行性(可以通過(guò)有限次運算得到結果)、輸入(0個(gè)或多個(gè))、輸出(一個(gè)或多個(gè))
正確性:不含語(yǔ)法錯誤;程序在輸入數據后可以得到滿(mǎn)意的結果;精心選擇的、典型的、苛刻的數據輸入可以得到滿(mǎn)意的結果;一切合法的輸入可以得到滿(mǎn)意的結果
可讀性:易于理解
健壯性:使對非法數據的處理也可以得到一定的結果
效率:時(shí)間和存儲空間
時(shí)間復雜度:程序在計算機上運行時(shí)間的度量;
2種方法:事后統計方法和事前分析估算方法;
事后統計方法的2個(gè)缺陷:一是必須提前運行程序,二是受到計算機硬件和軟件因素影響;
事前分析估算方法的5個(gè)取決因素:?jiǎn)?wèn)題規模;算法策略;程序編寫(xiě)的語(yǔ)言;編譯產(chǎn)生機器代碼的質(zhì)量;機器執行指令的速度;
漸進(jìn)時(shí)間復雜度:T(N) = O(F(N))
2種表示形式(對于隨問(wèn)題規模變化算法的時(shí)間復雜度計算):一種是平均算法時(shí)間復雜度,另一種是最壞情況時(shí)間復雜度(一般使用這個(gè))
常見(jiàn)的時(shí)間復雜度:
1>常量型:O(1);
2>多項式型:O(n)、O(n2)、...、O(nk)
3>對數型:O(log2n)、O(2log2n)
4>指數型:O(2n)、O(en)
常用的時(shí)間復雜度比較:
時(shí)間復雜度計算:只估算到F(n)的最高項的階,既不考慮低階項,也不考慮常系數。
空間復雜度:算法運行使用存儲空間的描述S(n);
原地工作:算法使用的對輸入數據和程序所占之外的額外空間為常數;
基本思想:盡可能運用人類(lèi)的自然思維方式來(lái)建立問(wèn)題空間的模型,構造盡可能直觀(guān)、自然的表達方法求解問(wèn)題的軟件系統;
面向對象=對象+分類(lèi)+繼承+消息通信;
對象:現實(shí)世界存在的具體事物,可以是有形物體,也可以是無(wú)形的事物或概念;
對象=數據+動(dòng)作(方法、操作);
對象的2個(gè)內容:屬性和行為;
對象的3個(gè)特征:一個(gè)區別于其他對象的名字;一組描述它屬性的狀態(tài);一組決定其功能或行為的操作;
對象3個(gè)特性:模塊的獨立性、動(dòng)態(tài)的連接性、易維護性;
消息:對象間交互過(guò)程所傳遞的通信信息;
3個(gè)性質(zhì):同一對象可以接收不同的消息;相同形式的消息可以發(fā)送給不同的對象產(chǎn)生不同的響應;消息發(fā)送時(shí)不考慮接收者,接受者可以響應消息也可以不響應;
消息序列:向同一個(gè)對象發(fā)送的多個(gè)信息或者一個(gè)對象向外發(fā)出多個(gè)消息;
共有消息:由外界對象向其發(fā)送的消息稱(chēng)為共有消息;
私有消息:由對象向其自身發(fā)送的消息;
3種類(lèi)型(按功能劃分):返回對象內部狀態(tài)的消息;改變對象內部狀態(tài)的消息;完成特定操作改變系統狀態(tài)的消息;
類(lèi):具有相同屬性和系統操作的對象集合的抽象;
實(shí)例:類(lèi)所定義的一個(gè)具體對象;
模板:類(lèi)可以看做是對象的模板,抽象地描述了屬于該類(lèi)的全部對象的屬性和操作;
封裝性:將一段代碼“包裝”起來(lái),應用時(shí)只知道這段代碼所能完成的功能,而不必知道該段代碼的具體實(shí)現細節;
3個(gè)條件:清楚的邊界+預留的對外接口+良好的內部實(shí)現細節隱蔽性
繼承性:子類(lèi)可以自動(dòng)擁有或共享父類(lèi)的全部屬性和方法;
4個(gè)優(yōu)點(diǎn):類(lèi)間清晰的層次關(guān)系;自動(dòng)的屬性和方法共享,提高代碼的復用性;減少接口,程序更加易于維護;具體功能的擴充,細節的完善;
多態(tài)性:同一個(gè)名字(函數或運算符)在不同場(chǎng)合具有不同的意義(重載);同一個(gè)界面有多重不同的實(shí)現(虛函數)。分別對應于編譯時(shí)的多態(tài)性和運行時(shí)的多態(tài)性。
面對過(guò)程的程序設計:程序=數據結構+算法,數據結構與算法單獨設計
面對對象的程序設計:對象=數據結構+算法,將數據結構和算法封裝到對象內部
早期:LISP語(yǔ)言,Simula67語(yǔ)言,SmallTal語(yǔ)言,逐漸引入面向對象的一些概念
C++,Java等等
聯(lián)系客服