1.時間復雜度
大O表示法:T(n) = O(f(n)) 其中f(n)是每行代碼執(zhí)行次數的和
for(i=1; i<=n; ++i)//1個顆粒時間
{
j = I;//n個顆粒時間
j++;//n個顆粒時間(兩個加起來就是2n個顆粒時間)
}
//整個加起來就是(1+2n)個顆粒時間
假設每行代碼的執(zhí)行時間都是一樣的,我們用 1顆粒時間 來表示,那么這個例子即: T(n) = (1+2n)*顆粒時間。
從這個結果可以看出,這個算法的耗時是隨著n的變化而變化,因此可以簡化這個算法的時間復雜度為:T(n) = O(n)
「因為大O符號表示法并不是用于來真實代表算法的執(zhí)行時間的,它是用來表示代碼執(zhí)行時間的增長變化趨勢的?!?br>
2.空間復雜度
空間復雜度是對一個算法在運行過程中臨時占用存儲空間大小的一個量度,同樣反映的是一個趨勢。
O(1):如果算法執(zhí)行所需要的臨時空間不隨著某個變量n的大小而變化,即此算法空間復雜度為一個常量,可表示為 O(1)。
O(n):比如new一個數組a[n],這個數據占用的大小為n,在for循環(huán)中也沒有再分配新的空間,所以空間復雜度只看new出的數組即可,為 O(n)