1.演算法**:是指基於特定的資料模型,旨在解決某一資訊處理問題而設計的乙個指令程式。**
必須包括以下要素:
輸入與輸出
基本操作、確定性與可行性
有窮性與正確性
退化性和魯棒性
重用性
證明有窮性和正確性的關鍵是:找到整個演算法所具有的某種不變性和單調性。而這單調性,必然是具有單調遞減函式特性的。
退化性和魯棒性是指,即使遇到特殊情況,遇到極端的實際情況,演算法也仍然能夠充分應對。
**2.演算法另乙個比較關鍵的地方在於,**演算法的效率。
法的效率只要從以下幾個方面來考察:
可計算性
難解性計算效率
資料結構
可計算性是指,演算法能夠結束而不能成為死迴圈或者在特定的時間內沒法完成。
難解性是指,演算法完成的成本過大,或許是時間過長,或者是空間損耗過大,即便解決了問題,也依然不是最佳選擇。
計算效率,一般從時間和空間兩方面來考察。
資料結構,如何構造支援高效演算法的資料資訊處理策略、技巧和方法,換句話說,怎樣的資料形式(陣列?鍊錶?二叉樹?圖?)可以更快更好地支援演算法。
3.複雜度度量
時間複雜度
處理特定規模輸入的演算法所需要執行的時間,由於執行程式的硬體的不同,時間會有不同,所以採用步數處理特定規模輸入的演算法所需要執行的次數來評價。
空間複雜度
一般只記錄執行演算法程式所需要的額外空間,也就是不記錄原始輸入所佔的空間。
目前已知的複雜度的順序是:
o(1
)、o(loglogn)、o
(logn)、o
(sqrt
(n))、o
(n)、o
(nloglogn)、o
(nlogn)、o
(n^2
)、o(n^
3)、o(2
^n)
一般常用的是:
o(1
)、o(logn)、o
(sqrt
(n))、o
(n)、、o
(nlogn)、o
(n^2
)、o(n^
3)、o(2
^n)
資料結構 緒論 基本概念
一 資料結構的基本概念 1.資料 客觀事物的符號表示 2.資料元素 資料的基本單位 3.資料項 資料結構中討論的最小單元 4.資料物件 性質相同的資料元素的集合 5.資料的邏輯結構 1 線性結構 2 非線性結構 樹 圖 6.資料的物理結構 1 順序儲存 2 鏈式儲存 3 索引儲存 4 雜湊儲存 二 ...
鄧俊輝老師資料結構 zuma程式設計題
題目 第一次提交95,居然是case2錯了,仔細檢查一下,發現建立鍊錶出錯了,沒有考慮開始時是空鍊錶的情況,檢查完後就ok了。100分 如下,include includeusing namespace std struct zuma head,tail,pos int reduce char a1...
資料結構總結 之 基本概念
資料 data 資料元素 data element 資料項 data item 資料物件 data object 資料結構 data structure 資料的邏輯結構 logical structure 分類 線性結構 線性表 非線性結構 樹 圖 或網路 資料的儲存結構 物理結構 physical...