iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

資料結構面面觀系列 第 12

演算法時間與空間概述

  • 分享至 

  • xImage
  •  

演算法的「時間複雜度 O(n)」

【定義】O(n)可視為某演算法在電腦中所需執行時間,亦即將「執行次數」轉換成電腦所需的執行時間。

【執行次數轉換時間複雜度之作法】

取「執行次數」中最高次方或最大指數部份的項目即可。

(1)陣列元素相加為2n+3=0(n)

(2)矩陣相加為2n^2+2n+2=0(n^2)

(3)矩陣相乘為2n^3+4n^2+2n+2=0(n^3)

時間複雜度的等級

【定義】在資料結構中,評估某一演算法的執行效率,必須視其時間複雜度的等級。

【時間複雜度的等級】(效率由高至低排列)

O(1) : 常數時間(Constant Time)

O(log2n):次線性時間(Sub-linear)

O(n):線性時間(Linear)

O(nlog2n):線性乘對數時間

O(n^2):平方時間(Quadratic)

O(n^3):立方時間(Cubic)

O(2^n):指數時間(Exponential)

O(n!):階乘時間(Factorial)

說明:效率愈高,代表著執行時間愈短。

例如O(n)比O(n^2)更有效率

空間複雜度(SPACE COMPLEXITY)

【定義】
一個程式P的空間複雜度(Space Complexity)包含固定的空間需求與變動的空間需求兩個部分。

固定的空間需求

【定義】
包含了程式在編譯時期所產生的空間需求。

例如程式本身的指令、常數、靜態變數及結構等。

變動空間需求

【定義】
是指從呼叫該副程式開始到完成之過程,所有佔用的「記憶體空間」

例如:參數、變數宣告,回傳值以及傳回位址時,都會佔用記憶體空間。


上一篇
演算法效率評估指南(下)
下一篇
陣列初登場
系列文
資料結構面面觀13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言