如何衡量乙個演算法的複雜度?
演算法的時間複雜度和空間複雜度統稱為演算法的複雜度
void test(int n)
for(int k = 0; k < 2*n; ++k)
icount++;
intcount = 10;
while(count--)
icount++;
}
這個函式執行次數為f(n)=n*n+2*n+10
時間複雜度實際就是乙個函式,該函式計算的是執行基本操作的次數
演算法存在最好、平均和最壞情況,在實際中通常關注的是演算法的最壞運**況,即:任意輸入規模n,演算法 的最長執行時間
乙個演算法語句總的執行次數是關於問題規模n的某個函式,記為f(n),n 稱為問題的規模。語句總的執行次數記為t(n),當n不斷變化時,t(n)也 在變化,演算法執行次數的增長速率和f(n)的增長速率相同。則有t(n) = o(f(n)),稱o(f(n))為時間複雜度的o漸進表示法
**一般演算法o(n)計算方法:
用常數1取代執行時間中的所有加法常數
在修改後的執行次數函式中,只保留最高端項
如果最高端項係數存在且不是1,則去除與這個項相乘的常數
遞迴演算法時間複雜度:遞迴總次數每次遞迴次數*
long
long fib(int n)
這個函式返回值為long long是防止返回值太大導致int越界,這也是這個遞迴一般編寫存在的問題
斐波那契數列遞迴時間複雜度為2的n次方,當n=30時就大約計算10億次,所以這個遞迴演算法幾乎沒有什麼實用價值
資料結構 時間複雜度 空間複雜度
1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...
資料結構 時間複雜度
一 演算法 是解決特定問題求解不走的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1.正確性 演算法的正確性是指演算法至少應該具有輸入 輸出和加工處理無歧義性 能正確反映問題的需求 能夠得島問題的正確答案。2.可讀性 演算法設計的另一目的是為了方便閱讀 理解和交流。3.健壯性...
資料結構 時間複雜度
時間複雜度是同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。定義 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不...