由於疫情原因,沒辦法去學校,資料結構也是看了很多遍,但知識點還是很容易忘,所以就用部落格的方式來記錄。
對於一般演算法的時間複雜度,一般直接找到它的迴圈的次數即可,例:
if
( a > b )
else
對(a>b)情況,最外層執行n-1次,內層執行最大執行次數為n²-1(當i=0)時,所以o(n)=n³。
對(a<=b)情況,最外執行2n-1次,內層執行最大執行次數為2n-1(當i=0)時,o(n)=n²。
對於總的時間複雜度o(n)應取最大的時間複雜度,即o(n)=n³。
然後是遞迴演算法的時間複雜度,一般列出該演算法各種情況下,執行次數,最後根據題意對應列出式子,例:
void fun (
int a,
int n,
int k)
}
求 fun(a,n,0),下面我給出解題格式
設fun(a,n,k)的時間為t1(n,k),則 fun(a,n,0)=t1(n,0)
t(n,k)=
t(n,0)=n+t1(n,k1)
…= n+n-1+…+2+t1(n,n-1)
=(n+2)(n-1)/2+n
可以看出該演算法的時間複雜度為o(n)=n²
對於特別複雜的遞迴演算法,我們可以用分而治之的方法,例:
從這裡可以看出,要用之前做遞迴的方法,是特別複雜的。
分析**我們可以得出,該演算法是在陣列中找到對應的值,並且用的是二分法,所以t(n)=t(n/2)+1;a=1(歸約後我們可以看出,只需只要比較一半了,即子問題為1);b=2(規模減半,即子問題為n/2);f(n)=1(歸約時,我們比較了1次,組合為自動0次,即總的工作量為1)
我們可以用主定理來求解,得到答案t(n)=o(log n),講解可以看此處主定理,這裡就不講解了。
資料結構 時間複雜度 空間複雜度
1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...
資料結構時間複雜度
如何衡量乙個演算法的複雜度?演算法的時間複雜度和空間複雜度統稱為演算法的複雜度 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 時間複雜度實際就是乙個函...
資料結構 時間複雜度
一 演算法 是解決特定問題求解不走的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。1.正確性 演算法的正確性是指演算法至少應該具有輸入 輸出和加工處理無歧義性 能正確反映問題的需求 能夠得島問題的正確答案。2.可讀性 演算法設計的另一目的是為了方便閱讀 理解和交流。3.健壯性...