iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
佛心分享-IT 人自學之術

菜雞學習資料結構的 30 日讀書分享系列 第 17 篇

菜雞學習資料結構的 30 日讀書分享【Day 17】

  • 分享至 

  • xImage
  •  

平方階

下面實例是一個迴圈巢狀結構,它的內迴圈時間複雜度為 O(n)。

int i j;
for (i = 0; i < n; i++)
{
    for (j = 0; j < n; j++)
    {
        /* 時間複雜度為O(1)的程式步驟序列 */
    }
}

而對於外層的迴圈,不過是內部這個時間複雜度為 O(n) 的敘述,再循環 n 次。
所以這段程式的時間複雜度為 O(n²)。

如果外迴圈的循環次數改為了 m,時間複雜度就變為 O(mxn)。

int i,j;
for (i = 0; i < m; i++)
{
    for (j = 0; j < n; j++)
    {
        /* 時間複雜度為O(1)的程式步驟序列 */
    }
}

所以可以歸納得出,迴圈的時間複雜度等於迴圈本體的複雜度乘以該迴圈執行的次數。

那麼下面的這個迴圈巢狀結構,它的時間複雜度是多少呢?

int i,j;
for (i = 0; i < n; i++)
{
    for (j = i; j < n; j++) /* 注意 j = i 而不是 0 */
    {
        /* 時間複雜度為O(1)的程式步驟序列 */
    }
}

換句話說,巢狀迴圈的時間複雜度就是把內外層的次數相乘,雙層都跑 n 次就會變成平方階 O(n²),而當內層迴圈的起點隨著外層改變時,就會形成像等差級數般遞減的執行次數。

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習資料結構的 30 日讀書分享【Day 16】
下一篇
菜雞學習資料結構的 30 日讀書分享【Day 18】
系列文
菜雞學習資料結構的 30 日讀書分享 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言