資料結構基礎 (漸進)時間複雜度

2021-08-27 03:10:03 字數 1462 閱讀 4113

一、演算法時間複雜度的本質是演算法的執行時間,也就是演算法中所有語句的頻度之和。語句頻度就是語句的執行次數,它與演算法求解問題的規模大小相關。

二、假設對於給定的演算法,目前問題規模為n,則語句頻度可以表示成乙個關於問題規模的函式 t(n),那麼演算法時間複雜度也就可以用t(n)表示,其含義是演算法在輸入規模為n時的執行時間。

三、當問題規模很大時,精確的計算t(n)是很難實現而且也是沒有必要的。對於演算法時間效能的分析無需非要得到時間複雜度t(n)的精確值,它的變化趨勢和規律也能清楚地反映演算法的時間耗費。基於此,引入了漸進時間複雜度作為時間效能分析的依據,它的含義就是:在問題規模 n趨於無窮大時演算法時間複雜度t(n)的漸進上界,即函式 t(n)的數量級(階)。

四、演算法時間複雜度和漸進演算法時間複雜度在實際的演算法分析過程中是不予區分的,漸進時間複雜度可以簡稱為時間複雜度,記為t(n)=o(f(n))。其中,通過統計演算法中基本操作重複執行的次數就可近似地得到演算法的執行效率,用o(n)表示,稱為時間複雜度。    

五、漸進時間複雜度

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。

在各種不同演算法中,若演算法中語句執行次數為乙個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。

按數量級遞增排列,常見的時間複雜度有:

常數階o(1)、對數階o(log2n)、線性階o(n)、線性對數階o(nlog2n)、平方階o(n2),立方階o(n3)、k次方階o(nk)、指數階o(2n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

六、 例子:

三個語句:

temp=i;

i=j;

j=temp;

以上三條單個語句的頻度均為 1,該程式段的執行時間是乙個與問題規模 n 無關的常數。

演算法的時間複雜度為常數階,記作 t(n)=1+1+1=o(1).

如果演算法的執行時間不隨著問題規模 n 的增加而增長,即使演算法中有 上千條語句,其執行時間也不過是乙個較大的常數。

此類演算法的時間複雜度是 o(1).

七、補充

o(n)這個大o表示的是最壞情況下的時間複雜度。

舉例,一共n^3次乘法和n^3次加法,那麼加起來就是2×n^3。

然後如果有乙個表示式f(n),使得n趨於無窮大的時候,lim(2×n^3)/f(n)=常數c,那麼就可以用大o表示。表示為o(f(n)),而且規定f(n)的表示式是不帶常數的係數的,那麼在這裡f(n)=n^3。

一般用大o表示演算法複雜度只需要取次數最高的項,而且去掉係數就ok了,不用每次都這麼算的。

三重迴圈而且每重迴圈都執行n次的話直接o(n^3)就好了。

資料結構 時間複雜度 空間複雜度

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