JS學習筆記#9 | Function的時間複雜度

更新於 發佈於 閱讀時間約 4 分鐘

時間複雜度(Time Complexity)

時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。

Big O 表示法

Big O 表示法是用來描述演算法在輸入量無限增長時的運行時間趨勢。它幫助我們了解演算法的效率,並比較不同演算法在面對大量數據時的表現。

  • 不包含低階項:Big O 表示法只保留運行時間的「主導項」(dominant term),也就是對增長趨勢影響最大的一項。例如: n2 + n 的複雜度在 Big O 中表達為 O(n²)
  • 不包含首項系數:Big O 表示法忽略主導項前的常數系數,因為系數不改變增長的速度。例如: 5n2 和 3n2 的 Big O 表示都記為 O(n²)

O(1) - 常數時間複雜度

這類演算法的執行時間不會隨著輸入的大小變化。

// 取出數組中的第一個元素
function getFirstElement(arr) {
return arr[0]; // 執行固定動作,不管 arr 的長度
}
raw-image

即便 n 增加,執行時間仍然不變。


O(n) - 線性時間複雜度

這類演算法的執行時間隨著輸入的大小而成比例地增加。

function sumArray(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
raw-image

當 n 增加,執行時間成比例增加。


O(n²) - 平方時間複雜度

這類演算法的執行時間隨著輸入量平方增長。

function printAllPairs(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
console.log(arr[i], arr[j]);
}
}
}
raw-image

當 n 增加,執行時間呈 n² 增長,即平方增長。


O(2ⁿ) - 指數時間複雜度

這種複雜度的演算法執行時間隨著輸入量指數增加,比如斐波那契數列的遞迴解法:

function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
raw-image

指數時間的增長非常快。當 n 增加,執行時間呈 2ⁿ 增長,導致非常高的運算量。


總結

Big O 表示法提供了一個方法來分析演算法隨著輸入增長的時間增長趨勢,能幫助我們判斷不同演算法隨著輸入量增長的效率,對優化程式效能至關重要。

留言
avatar-img
留言分享你的想法!
avatar-img
koko的沙龍
1會員
34內容數
koko的沙龍的其他內容
2025/04/30
React 事件處理:讓網頁動起來~ 網頁的互動性是吸引使用者、提供良好體驗的關鍵。 在 React 中,透過監聽使用者的操作(例如點擊、滑鼠移動、鍵盤輸入),並執行相應的程式碼,來實現豐富的互動效果。
Thumbnail
2025/04/30
React 事件處理:讓網頁動起來~ 網頁的互動性是吸引使用者、提供良好體驗的關鍵。 在 React 中,透過監聽使用者的操作(例如點擊、滑鼠移動、鍵盤輸入),並執行相應的程式碼,來實現豐富的互動效果。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
看更多
你可能也想看
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元二次方程式
Thumbnail
中學數學基礎練習—一元二次方程式
Thumbnail
中學數學基礎練習—一元二次方程式
Thumbnail
中學數學基礎練習—一元二次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News