二.算法

算法:解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或者多個操作

算法的五個特性:
1.輸入 2.輸出 3.有窮性 4.確定性 5.可行性

算法設計的要求:
1.正確性 2.可讀性 3.健壯性 4.時間效率高和存儲量低

算法效率的度量方法:
1.事後統計法 2.事前分析估算法

函數的漸進增長:給定兩個函數f(n)和g(n),如果存在一個整數N,使得對於所有的n > N,f(n)總是比g(n)大,那麼,我們說f(n)的增長漸進快於g(n).

比如算法A需要2n + 1 次操作
隨着n的增長,可以忽略加法常數
與最高次項相乘的常數並不重要

判斷一個算法的效率時,函數中的常數和其他次要項常常可以忽略,而應該關注主項(最高階項)的階數

算法時間複雜度:
在進行算法分析時,語句總的執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量級.

算法的時間複雜度,也就是算法的時間量度,記作:
T(n) = O(f(n))
表示問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間複雜度,簡稱爲時間複雜度.其中f(n)是問題規模n的某個函數
一般情況,隨着n的增長,T(n)增長最慢的算法稱爲最優算法

用大寫O()來體現算法時間複雜度的記法,我們稱之爲大O記法

推導大O階方法

推導大O階
1.用常數1取代運行時間中的所有加法常數
2.在修改後的運行次數函數中,只保留最高階項
3.如果最高階項存在且不是1,則去除與這個項相乘的常數
得到的結果就是大O階
常用的時間複雜度所耗費的時間從小到大依次是:

O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3)<O(2n)<O(n!)<O(nn)

算法的空間複雜度通過計算算法所需要的存儲空間實現,算法空間複雜度的計算公式記作:
S(n) = O(f(n))
其中,n爲問題的規模,f(n)爲語句關於n所佔存儲空間的函數.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章