當前位置:首頁 » 編程語言 » c語言快速冪

c語言快速冪

發布時間: 2025-04-11 02:20:49

㈠ 如何計算時間復雜度

1、先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出T(n)的同數量級(它的同數量級有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出後,f(n)=該數量級,若T(n)/f(n)求極限可得到一常數c,則時間復雜度T(n)=O(f(n))。

2、舉例

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

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

{c[ i ][ j ]=0; //該步驟屬於基本操作 執行次數:n的平方次

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

c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //該步驟屬於基本操作 執行次數:n的三次方次}}

則有 T(n)= n的平方+n的三次方,根據上面括弧里的同數量級,我們可以確定 n的三次方為T(n)的同數量級

則有f(n)= n的三次方,然後根據T(n)/f(n)求極限可得到常數c

則該演算法的 時間復雜度:T(n)=O(n的三次方)

),線性階O(n),線性對數階O(nlog2n),平方階O(n^2),立方階O(n^3),...,

k次方階O(n^k),指數階O(2^n)。隨著問題規模n的不斷增大,上述時間復雜度不斷增大,演算法的執行效率越低。

關於對其的理解

《數據結構(C語言版)》 ------嚴蔚敏 吳偉民編著 第15頁有句話「整個演算法的執行時間與基本操作重復執行的次數成正比。」

基本操作重復執行的次數是問題規模n的某個函數f(n),於是演算法的時間量度可以記為:T(n) = O(f(n))

如果按照這么推斷,T(n)應該表示的是演算法的時間量度,也就是演算法執行的時間。

而該頁對「語句頻度」也有定義:指的是該語句重復執行的次數。

如果是基本操作所在語句重復執行的次數,那麼就該是f(n)。

上邊的n都表示的問題規模。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:621
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:350
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:65
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:290
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:783
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:335
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:199
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:794
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:352
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:579