資料結構 演算法複雜度

2021-09-24 20:28:43 字數 2714 閱讀 6101

(二)、演算法的效能評價

三、真題解析

資料結構的第一章《緒論》包含的最後乙個重要內容是關於演算法的複雜度。

這個考點一般會單獨出現在選擇題的前兩道,需要你熟練掌握演算法的基本概念演算法時間複雜度空間複雜度的分析判斷等。其次,還會出現在大題的程式設計部分,將演算法複雜度作為乙個限制條件,要求你給出滿足給定時間複雜度和空間複雜度的演算法。

不論如何,首先我們需要掌握演算法的各個相關概念,並明白演算法複雜度的度量標準。再靈活地運用到各類題型中去。

(一)、演算法

1. 演算法

演算法(algorithm)是規則的有限集合,是為解決特定問題而規定的一系列操作。

舉乙個通俗易懂的例子,你在家做飯,教會你做一道菜的菜譜,就可以被看作是乙個演算法。

2. 演算法的五大特性

3. 演算法的設計目標

對於演算法的特性演算法的設計目標,這兩個五點容易混淆,有時也會作為乙個考點,考察對其概念的區分,如下:

【c、b】解析:顯而易見。

(二)、演算法的效能評價

1. 問題規模

演算法效能與問題規模有關。問題規模是問題大小的本質表示,對不同的問題其表現形式不同。

演算法求解問題的輸入量稱為問題的規模,一般用整數n表示。

2. 語句頻度

語句頻度是指該語句在乙個演算法中重複執行的次數。乙個演算法的時間耗費就是該演算法中所有語句頻度之和。

3. 時間複雜度

將演算法中基本操作的執行次數作為演算法時間複雜度的度量。

求解時間複雜度的步驟:

找基本操作,確定規模n(多數情況下取最深層迴圈內的語句所描述的操作作為基本操作)

計算出n的函式f(n),即f(n) = 基本操作所執行的總次數求出時間複雜度t(n) = o( f(n)中增長最快的項 / 此項的係數)

常用函式的時間複雜度比較

o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n)

4. 空間複雜度

演算法的空間複雜度指演算法在執行時所需儲存空間的度量,主要考慮在演算法執行過程中臨時占用的儲存空間的大小。

【b】解析:無需贅言。

【c】解析:

時間複雜度即為基本操作執行的次數,顯然問題規模越大,基本操作的次數越多,因此時間複雜度與規模有關。

在相同規模下,與資料初態也有關,如兩個數相乘,有乙個因子為0時的計算速度顯然要比兩個因子都非0的情況要快。

【b】解析:無需贅言。

【d】解析:

選擇錯誤的!這裡全錯。

a. 電腦程式只是實現演算法的一種手法,手工也可以完成。

b.演算法可以理解為由基本運算及規定的運算順序所構成的完整的解題過程。程式是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。兩者是不同的概念。

c.演算法的可行性是指演算法中的所有操作都必須可以通過已經實現的基本操作進行運算,並在有限次內實現。

【c】解析:

選擇錯誤的!

a. 乙個可執行程式除了需要記憶體空間來寄存本身的指令、常數、變數和輸入資料外,還需要額外的空間。如果這個額外空間相對於問題的規模(輸入資料)來說是個常數,我們就稱之為原地工作

d. 大多數情況下應該是這樣,但是不能說的這麼絕對,而需要看編譯鏈結後最終的機器指令,這些指令操作的次數越少,說明該語言在某種編譯鏈結環境下的效率越高。實際上即使同一種語言在不同的編譯環境下,也有可能不同。

資料結構之演算法複雜度

解決特定問題求解步驟的描述。在計算機中表現為指令的有限序列,每條指令可表示乙個或多個操作。此外,乙個演算法還具有下列5個特性 有窮性,確定性,可行性,輸入,輸出。演算法設計的要求 正確性,可讀性,健壯性,效率與低儲存量需求。what?時間複雜度和空間複雜度 why?可以用度量演算法的好與壞 how?...

資料結構(二) 演算法複雜度

演算法中執行次數最多的那條語句就是基本語句,測定執行時間就是計算基本語句的執行次數 可以忽略加法常數 與最高此項相乘的常數並不重要 最高次項的指數越大,增長越快 判斷乙個演算法執行效率時,函式中的常數和其他次要項常常可以忽略,更應該關注主項 最高端項 的階數 某個演算法,隨著n增大,它會越來越優於另...

資料結構 演算法複雜度比較

public intsum int a if maxreturn max 時間複雜度n 3 不知道怎麼想的。演算法二 兩個for int max 0 for int i 0 i a.length i if maxreturn max 時間複雜度n 2,暴力解法,把每個子式都算出來,然後比較哪個大。演...