資料結構 02

Algorithms 和 Data Structure 的關係 Algorithm → Pseudocode → Program Data Structure 的角色?透過程式語言實作 Pseudocode,為演算法提供資料的組織方式。 Recursive Algorithms 在 資料結構 01 中,我們介紹了 Binary Search 的迴圈寫法: // Time Complexity: O(log n) // Space Complexity: O(1) function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; } Recursive Binary Search 同樣的邏輯,改用遞迴寫法:...

February 25, 2026 · 3 分鐘 · Rhan0

資料結構 01

Algorithm Specification 演算法是什麼?簡單來說就是解決問題的方法。一個合格的演算法必須滿足以下五個條件: Input — 輸入:你的問題 Output — 輸出:你的答案 Definiteness — 明確性:每一步都必須是明確的 Finiteness — 有限性:必須在有限的步驟內結束 Effectiveness — 有效性:每一步都必須是可執行的 Selection Sort(選擇排序) Input: 一堆未排序的數字 Output: 由小到大(或由大到小)排好的數字 核心概念: 每次從剩餘的數字中找到最小的,放到當前位置,再從剩餘的數字中找下一個最小的,直到排完。 // Time Complexity: O(n^2) // Space Complexity: O(1) function selectionSort(arr) { const N = arr.length; for (let i = 0; i < N - 1; i++) { let minIndex = i; for (let j = i + 1; j < N; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]]; } return arr; } 多種 Sort 每一種排序演算法的設計理念不同,常見的排序演算法有:...

February 23, 2026 · 5 分鐘 · Rhan0