演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。
一個演算法應該具有以下五個重要的特徵:
1、有窮性:
一個演算法必須保證執行有限步之後結束;
2、確切性:
演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性:
演算法原則上能夠精確地執行,而且人們用筆和紙做有限次運算後即可完成。
一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
時間複雜度
演算法的時間複雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n
的函式f(n),演算法的時間複雜度也因此記做T(n)=Ο(f(n)),因此,問題的規模n越大,演算法執行的時間的增長率與f(n)的增長率正相關,稱作漸進時間複雜度(Asymptotic Time Complexity)。
演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。
一個演算法應該具有以下五個重要的特徵:
1、有窮性:
一個演算法必須保證執行有限步之後結束;
2、確切性:
演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性:
演算法原則上能夠精確地執行,而且人們用筆和紙做有限次運算後即可完成。
一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
時間複雜度
演算法的時間複雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n
的函式f(n),演算法的時間複雜度也因此記做T(n)=Ο(f(n)),因此,問題的規模n越大,演算法執行的時間的增長率與f(n)的增長率正相關,稱作漸進時間複雜度(Asymptotic Time Complexity)。