資料結構 演算法和演算法分析

2021-10-23 09:30:55 字數 1856 閱讀 1902

一、演算法的基本概念

1. 什麼是演算法

演算法:演算法是對特定問題的求解步驟,是指令的有限序列。

演算法的特徵:

(1)演算法有0或多個輸入

(2)演算法至少有乙個輸出

(3)演算法的每一條指令都可以執行

(4)演算法的每一條指令都有確切的定義, 沒有二義。

(5)演算法必須總能在執行有限步以後終止。

2. 演算法的描述方法

演算法可以用自然語言、流程圖、程式語言或偽**描述。當乙個演算法用程式語言描述時,便成為程式。演算法和程式的區別:演算法必須是有窮的,而程式不一定。

3. 演算法優劣的衡量標準

(1)正確性:演算法執行結果應當滿足預先規定的功能和效能要求。(2)可讀性:乙個演算法應該思路清晰、層次分明、易讀易懂。

(3)健壯性:輸入不合法資料時,應能做適當處理,不至於引起嚴重後果。

(4)高效性:執行效率高,占用儲存空間小。

二、演算法的時間複雜度

(1)演算法的時間複雜度

演算法的時間複雜度是程式執行從開始到結束所需的時間。
一般情況下,可以通過考察演算法所對應的程式中的程式步數來衡量演算法的時間複雜度。

乙個演算法時間花銷與演算法中語句的執行次數成正比例,演算法中語句執行次數多,它的時間花銷就多。

演算法中語句的執行次數稱為語句頻度。

例:(2)漸進時間複雜度

使用大o記號表示的演算法的時間複雜度,稱為演算法的漸近時間複雜度。

漸近時間複雜度也常簡稱為時間複雜度。

通常用o(1)表示常數計算時間,即演算法只需執行有限個程式步。

在大0記號下,可用程式步來估計演算法的執行時間。

很多情況下,可以通過考察乙個演算法中的關鍵操作(關鍵操作被認為是一

個執行次數最多的程式步)的執行次數來計算演算法的漸近時間複雜度。有時

也需要同時考慮幾個關鍵操作,以反映演算法的執行時間。

(3)最好、最壞和平均時間複雜度

最好情況:如果待查元素恰好是第乙個元素,則需要查詢的時間越短,這就是最好情況。

最壞情況:如果待查元素是最後乙個元素,則是最壞情況。

平均情況:平均查詢次數是n/2.

三、演算法的空間複雜度

演算法的空間複雜度指程式執行從開始到結束所需的儲存量。演算法空間複雜度一般按照最壞情況分析。問題例項的特徵是指與問題的具體例項有關的量。程式執行所需的儲存空間包括:

(1)固定部分

固定部分的空間和所處理資料的大小和個數無關,或者是與問題的例項的特徵無關。

主要包括程式**、常量、簡單變數、定長的結構變數所佔的空間。

(2)可變部分

可變空間大小與演算法在某次執行中處理的特定資料的大小和規模有關。

資料結構和演算法分析

1.1本書討論的內容 1.2數學知識的複習 1.3遞迴簡論 了解程式在適當輸入和巨大 輸入時的差別,明白優化代 碼採取適當資料結構的重要 指數 對數 級數 模運 算 歸納法反證法證明 指在函式的定義中使用 函式自身的方法,還較常 用於描述以自相似方法 重複事物的過程。也可 以理解為自我複製的過程。在...

資料結構演算法1 演算法和演算法分析

最近面試ios實習生。幾次都是敗在資料結構演算法上面了。決定重新撿起大學的課本,複習一下資料結構演算法相關知識。1 反轉乙個鍊錶。迴圈演算法。1 list reverse list l 13 return tmp 14 2 反轉乙個鍊錶。遞迴演算法。1 list resverse list l 8 ...

資料結構(2) 演算法和演算法分析

資料結構與演算法之間存在著本質聯絡。演算法的定義及特性 演算法是為了解決某類為而規定的乙個有限長的操作序列。乙個演算法必須滿足一下五個重要特性。演算法的時間複雜度 一般情況下,演算法中基本語句重複執行的次數是問題規模n的某個函式f n 演算法的時間量度記作t n o f n 它表示雖問題規模n的增大...