計算時間複雜度

2021-09-11 22:05:03 字數 1923 閱讀 1084

最近在刷題準備校招,總是碰到計算時間複雜度的題,總是迷糊。今天就總結一下吧~可能會比較亂,因為是按照我以後能看懂的方式總結的~hh

首先我們先了解一下兩個概念:乙個是時間複雜度,乙個是漸近時間複雜度。

前者是某個演算法的時間耗費,它是該演算法所求解問題規模n的函式,而後者是指當問題規模趨向無窮大時,該演算法時間複雜度的數量級。

當我們評價乙個演算法的時間效能時,主要標準就是演算法的漸近時間複雜度,因此,在演算法分析時,往往對兩者不予區分,經常是將漸近時間複雜度t(n)=o(f(n))簡稱為時間複雜度,其中的f(n)一般是演算法中頻度最大的語句頻度。

此外,演算法中語句的頻度不僅與問題規模有關,還與輸入例項中各元素的取值相關。但是我們總是考慮在最壞的情況下的時間複雜度。以保證演算法的執行時間不會比它更長。

時間複雜度是總運算次數表示式中受n的變化影響最大的那一項(不含係數)

接下來看一下簡單的例題:

(1) for(i=1;i<=n;i++)   

for(j=1;j<=n;j++)

s++; //迴圈了n*n次,當然是o(n^2)

(2) for(i=1;i<=n;i++)

for(j=i;j<=n;j++)

s++; //迴圈了(n+n-1+n-2+...+1)≈(n^2)/2,因為時間複雜度是不考慮係數的,所以也是o(n^2)

(3) for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

s++; //迴圈了(1+2+3+...+n)≈(n^2)/2,當然也是o(n^2)

(4) i=1;k=0;

while(i<=n-1) //迴圈了n-1≈n次,所以是o(n)

(5) for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

for(k=1;k<=j;k++)

x=x+1; //迴圈了(1^2+2^2+3^2+...+n^2)=n(n+1)(2n+1)/6≈(n^3)/3,不考慮係數,自然是o(n^3)

(6)交換i和j的內容

sum=0;                 (一次)

for(i=1;i<=n;i++)       (n次 )

for(j=1;j<=n;j++) (n^2次 )

sum++;       (n^2次 ) //t(n)=2n^2+n+1 =o(n^2)

(7)for (i=1;i例如:

for(i=1;i<=n;++i)

}則有 t(n)= n^2+n^3,根據上面括號裡的同數量級,我們可以確定 n^3為t(n)的同數量級

則有f(n)= n^3,然後根據t(n)/f(n)求極限可得到常數c

則該演算法的 時間複雜度:t(n)=o(n^3)

o(1): 表示演算法的執行時間為常量

o(n): 表示該演算法是線性演算法

o(㏒2n): 二分查詢演算法

o(n2): 對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。

o(n3): 做兩個n階矩陣的乘法運算

o(2n): 求具有n個元素集合的所有子集的演算法

o(n!): 求具有n個元素的全排列的演算法

按數量級遞增排列依次為:常數階o(1)、對數階o(log2n)、線性階o(n)、線性對數階o(nlog2n)、平方階o(n^2)、立方階o(n^3)、k次方階o(n^k)、指數階o(2^n)。

其中:1、o(n),o(n^2), 立方階o(n^3),..., k次方階o(n^k) 為多項式階時間複雜度,分別稱為一階時間複雜度,二階時間複雜度

2、o(2^n),指數階時間複雜度,該種不實用

3、對數階o(log2n), 線性對數階o(nlog2n),除了常數階以外,該種效率最高

時間複雜度計算

定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...

時間複雜度計算

1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...

計算時間複雜度

求解演算法的時間複雜度的具體步驟是 找出演算法中的基本語句 演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。計算基本語句的執行次數的數量級 只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能...