資料結構時間複雜度分析

2021-10-05 19:45:54 字數 1006 閱讀 9648

由於疫情原因,沒辦法去學校,資料結構也是看了很多遍,但知識點還是很容易忘,所以就用部落格的方式來記錄。

對於一般演算法的時間複雜度,一般直接找到它的迴圈的次數即可,例:

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.健壯性...