資料結構 演算法的時間複雜度

2021-06-07 14:25:26 字數 1765 閱讀 3668

如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t(n),它是n的某一函式 t(n)稱為這一演算法的「時間複雜性」。

當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的「漸近時間複雜性」。

我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如果f(n)=o(n),那顯然成立f(n)=o(n^2),它給你乙個上界,但並不是上確界,但人們在表示的時候一般都習慣表示前者。

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

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

求解演算法的時間複雜度的具體步驟是:

⑴ 找出演算法中的基本語句;

演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。

⑵ 計算基本語句的執行次數的數量級;

只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能夠簡化演算法分析,並且使注意力集中在最重要的一點上:增長率。

⑶ 用大ο記號表示演算法的時間效能。

將基本語句執行次數的數量級放入大ο記號中。

如果演算法中包含巢狀的迴圈,則基本語句通常是最內層的迴圈體,如果演算法中包含並列的迴圈,則將並列迴圈的時間複雜度相加。

o(1)

temp=i;i=j;j=temp;                    

以上三條單個語句的頻度均為1,該程式段的執行時間是乙個與問題規模n無關的常數。演算法的時間複雜度為常數階,記作t(n)=o(1)。如果演算法的執行時 間不隨著問題規模n的增加而增長,即使演算法中有上千條語句,其執行時間也不過是乙個較大的常數。此類演算法的時間複雜度是o(1)。

o(n^2)

2.1. 交換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)

2.2.   

for (i=1;io(n)

2.3.

a=0;

b=1;                      ①

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

解: 語句1的頻度:2,        

語句2的頻度: n,        

語句3的頻度: n-1,        

語句4的頻度:n-1,    

語句5的頻度:n-1,                                  

t(n)=2+n+3(n-1)=4n-1=o(n).

o(log2n )

2.4.

i=1;       ①

while (i<=n)

i=i*2; ②

解: 語句1的頻度是1,  

設語句2的頻度是f(n),   則:2^f(n)<=n; f(n)<=log2n    

取最大值f(n)= log2n,

t(n)=o(log2n )

o(n^3)

2.5.

for(i=0;i

資料結構,演算法,時間複雜度

什麼是資料結構 data structure 中文維基百科 維基百科中文版 在電腦科學中 是計算機中儲存 組織資料的方式。資料結構意味著介面或封裝 乙個資料結構可被視為兩個函式之間的介面,或者是由資料型別聯合組成的儲存內容的訪問方法封裝。不同種類的資料結構適合不同種類的應用,部分資料結構甚至是為了解...

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

1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...

資料結構(演算法的時間複雜度和空間複雜度)

時間複雜度 時間複雜度和空間複雜度是演算法效率的度量方法。也就是說,乙個好的演算法取決於它的時間複雜度和空間複雜度。函式的漸近增長 給定兩個函式f n 和g n 如果存在乙個整數n,使得對於所有的n n,f n 總是比g n 大。那麼,我們說f n 的增長漸近快於g n 翻譯過來就是 如果存在乙個臨...