目錄1.3 抽象資料型別的表示與實現
1.4 演算法和演算法分析
計算機主要用千數值計算時, 一般要經過如下幾個步驟:首先從具體問題抽象出數學模型,然後設計乙個解此數學模型的演算法,最後編寫程式,進行測試、除錯,直到解決問題,非數值計算問題無法用數學方程建立數學模型
三種資料結構
舉例
這是線性資料結構
這是」樹「資料結構
」圖「資料結構
1.2.1 資料、 資料元素、 資料項和資料物件
1.2.2 資料結構
資料結構包括邏輯結構和儲存結構兩個層次
(1)邏輯結構:可看作是具體問題抽象出來的數學模型
兩個基本要素:資料元素,關係(資料元素間的邏輯關係)
線性結構和非線性結構:線性結構包括線性表,棧,佇列,字串,資料,廣義表;非線性結構包括樹,二叉樹,圖
(2)儲存結構(資料物件在計算機中的儲存表示稱為資料的儲存結構,也稱為物理結構)
兩種基本的儲存結構:
順序儲存結構(陣列)
鏈式儲存結構(鍊錶)
1.2.3 資料型別和抽象資料型別
(1)資料型別(是乙個值的集合和定義在這個值集上的一組操作的總稱)
(2)抽象資料型別(一般指由使用者定義的、表示應用問題的數學模型,以及定義在這個模型上的一組操作的總稱)
抽象資料型別的定義格式如下:
adt抽象資料型別名adt抽象資料型別名
其中,資料物件和資料關係的定義採用數學符號和自然語言描述,基本操作的定義格式為:
基本操作名(參數列)
初始條件:《初始條件描述》
操作結果:《操作結果描述》
以複數為例, 給出乙個完整的抽象資料型別的定義、 表示和實現。
(1)定義部分
adt complex adt complex
(2)表示部分
typedef struct//複數型別
complex;
(3)實現部分
演算法是研究資料結構的重要途徑
1.4.1 演算法的定義及特性
演算法的五個重要特性
有窮性:演算法執行有窮步,有窮時間
確定性:演算法有明確的含義,不會有二義性
可行性:演算法中的所有操作都可以通過已經實現的基本操作運算執行有限次來實現
輸入:乙個演算法有零個或多個輸入
輸出:乙個演算法有乙個或多個輸出,無輸出的 演算法沒有任何意義
1.4.2 評價演算法優劣的基本標準
正確性:在有限的執行時間內得到正確的結果。
可讀性:乙個好的演算法,首先應便千人們理解和相互交流 , 其次才是機器可執行性
高效性:當輸入的資料非法時,好的演算法能適當地做出正確反應或進行相應處理,而不會產生一些莫名其妙的輸出結果。
健壯性:高效性包括時間和空間兩個方面。時間高效是指演算法設計合理,執行效率高, 可以用時間複雜度來度量;空間高效是指演算法占用儲存容量合理,可以用空間複雜度來度量。時 間複雜度和空間複雜度是衡量演算法的兩個主要指標。
1.4.3 演算法的時問複雜度
語句頻度:一條語句被執行的次數
定義:一般情況下, 演算法中基本語句重複執行的次數是問題規模n的某個函式j(n), 演算法的時間量度記作
t(n) = o(f(n))
它 表示隨問題規模n的增大, 演算法執行時間的增長率 和 j(n)的增長率相同, 稱做演算法的
漸近時間複雜度, 簡稱時間複雜度
分析演算法時間複雜度的基本方法為:找出所有語句中語句頻度最大的那條語句作為基本語句, 計算基本語句的頻度得到問題規模n的某個函式f(n), 取其數量級用符號"o"表示即可。
時間複雜度可以分為,常數階,線性階,平方階,立方階,對數階
1.4.4 演算法的空問複雜度
定義:作為演算法所需儲存空間的量度,簡稱空間複雜度,它也是問題規模n的函式, 記作: s(n) = o(f (n))
對於輸入資料所佔的具體儲存量取決於問題本身,與演算法無關,這樣只需分析該演算法在實現時所需要的輔助空間就可以了。若演算法執行時所需要的輔助空間相對於輸入資料量而言是個常數, 則稱這個演算法為原地工作,輔助空間為0(1)
第一章 緒論
1.16 void print descending int x,int y,int z 按從大到小順序輸出三個數 print descending 1.17 status fib int k,int m,int f 求k階斐波那契序列的第m項的值f gender char schoolname 校...
第一章 緒論
本 題目源於粵電集團科研專案 沙角a電廠優化排程輔助決策系統 沙角a電廠電網排程已由原來對互不聯絡的單機排程方式發展為對全廠整體總負荷的經濟排程方式,現有五颱發電機組 其中210mw機組三颱,300mw機組二台 的主要工作如下 1.實時資料採集及預處理 機組效能計算和能損分析建立在準確獲取現場資料的...
第一章 緒論
1.1 資料結構在程式設計中的作用 a 問題 資料模型 基本思路 想法 資料表示 資料處理 演算法 程式語言 程式設計環境 設計方法 程式 b 著名公式 資料結構 演算法 程式 1.2 本書討論的主要內容 a 問題一般分為 數值問題 非數值問題 a 數值問題抽象出的資料模型通常是數學方程 b 非數值...