資料結構之演算法

2021-09-27 06:30:53 字數 1379 閱讀 3194

資料結構+演算法=程式

資料結構是對資料(操作物件)的描述,及資料的型別和組織形式,演算法則是對操作步驟的描述

1. 有窮性:

演算法中的每個步驟都能在有限時間內完成(程式可不滿足此條件)

2. 確定性:

演算法的每一步必須確切定義,在任何條件下演算法只有一條執行路徑

3. 可行性:

演算法中的所有操作必需通過已實現的基本操作運算有限次實現

4. 有輸入:

乙個演算法應有零個或多個輸入

5. 有輸出:

乙個演算法應有乙個或多個輸出

正確性:

程式無語法錯誤;對(幾組或苛刻的或一切的)輸入資料可得出滿足規格說明要求的結果

可讀性:

演算法被理解的難易程度

健壯性:

對非法輸入的抵抗能力

高效率與低儲存量需求:

效率(演算法執行時間),儲存量(演算法儲存過程中所需的最大儲存空間)均與問題規模有關

描述工具

自然語言、框圖、高階程式語言

衡量演算法效率的方法

方法區別

事前分析估算法

預先比較,比較常用

事後統計法

必需在計算機實地執行程式,易有其他因素改變演算法本質

演算法執行時間相關因素

演算法採用的策略;

演算法解決問題的規模;

程式設計採用的語言;

編譯程式產生的機器**的質量;

執行演算法的計算機速度;

後三條受計算機硬體和軟體的制約

乙個特定演算法的執行時間只依賴於問題的規模

for( int i = 0; i < n; i++)此演算法時間複雜度為o(n)
int num = 1;

while( num < n)

//假設迴圈的次數為x,則由2^x=n得出x=log₂n,

//因此得出這個演算法的時間複雜度為o(log₂n)

平方階

for( int i = 0; i < n; i++)

} //迴圈次數為 n² ,時間複雜度為o(n²)

o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!)
定義:

評估執行程式所需的儲存空間,可估算出程式對記憶體的使用程度,

記為 s(n) = o(f(n))

空間複雜度所需考慮因素

輸入資料、程式本身、輔助變數

資料結構之演算法

演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法是需要單獨講解的,在資料結構中談到演算法,是為了幫助理解好資料結構,並不會詳談演算法的方方面面。1 2 3 100 演算法1 include int main void printf d sum...

《資料結構與演算法》之資料結構簡介

資料結構 資料 結構,資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。一 資料的邏輯結構 指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關...

資料結構48 資料結構之查詢演算法

在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...