บทนำ
คุณเคยสงสัยไหมว่าทำไมบางโปรแกรมรันเร็ว บางโปรแกรมกลับช้ามาก? หนึ่งในวิธีการวัดประสิทธิภาพของอัลกอริธึมคือการใช้ Big O Notation ซึ่งเป็นภาษาสากลของนักพัฒนาในการอธิบายเวลาในการประมวลผลหรือความซับซ้อนของโค้ด
บทความนี้จะพาคุณเข้าใจ Big O อย่างเป็นขั้นตอน พร้อมตัวอย่างและภาพประกอบ เหมาะสำหรับผู้เริ่มต้นหรือคนที่ต้องเตรียมตัวเข้าสัมภาษณ์งานเขียนโปรแกรม
Big O Notation คืออะไร?
Big O Notation คือการวัดว่า ประสิทธิภาพของอัลกอริธึม แปรผันตามขนาดของข้อมูล (n) อย่างไร โดยเฉพาะในแง่ของเวลา (Time Complexity) และพื้นที่หน่วยความจำ (Space Complexity)
ตัวอย่าง Big O ที่พบบ่อย
- O(1) — คงที่ เช่น การเข้าถึง array[index]
- O(n) — เส้นตรง เช่น การ loop ธรรมดา
- O(n²) — กำลังสอง เช่น nested loop
- O(log n) — ล็อก เช่น Binary Search
- O(n log n) — เช่น Merge Sort
- O(2ⁿ) — เพิ่มขึ้นแบบทวีคูณ เช่น Recursive Fibonacci
ตัวอย่างจากโค้ดจริง
O(1): ค่าคงที่
function getFirstItem(arr) { return arr[0]; // ไม่ว่าจะมีกี่ตัว เวลาเท่ากัน }
O(n): Linear
function printAll(items) { for (let i = 0; i < items.length; i++) { console.log(items[i]); } }
O(n²): Nested loop
function printPairs(items) { for (let i = 0; i < items.length; i++) { for (let j = 0; j < items.length; j++) { console.log(items[i], items[j]); } } }
O(log n): Binary Search
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; }
แล้ว Space Complexity ล่ะ?
เช่นเดียวกับเวลา บางอัลกอริธึมต้องการหน่วยความจำเพิ่มขึ้นตาม n
function buildArray(n) { const arr = []; for (let i = 0; i < n; i++) { arr.push(i); } return arr; // ใช้ space = O(n) }
ทำไมโปรแกรมเมอร์ต้องรู้ Big O?
- 🔍 เข้าใจว่าฟังก์ชันไหนช้า-เร็ว
- 📈 ปรับปรุงอัลกอริธึมให้มีประสิทธิภาพ
- 💼 ใช้ในการตอบคำถามสัมภาษณ์งานสาย Dev
- 🚀 ทำให้แอปคุณ scale ได้เมื่อมีผู้ใช้เพิ่มขึ้น
Tips การจำ Big O
- ใช้ภาพกราฟช่วยจำ เช่น O(n²) จะพุ่งแรง
- จำว่า loop ซ้อน = คูณกัน → O(n²)
- Divide-and-Conquer (เช่น Merge Sort) = O(n log n)
- เข้าใจพื้นฐาน Recursion → เพื่อวิเคราะห์ Big O ได้ดีขึ้น

สรุป
Big O Notation เป็นเครื่องมือสำคัญที่ช่วยให้เราเข้าใจว่าโค้ดของเราจะทำงานเร็วแค่ไหน และจะ scale ได้ดีเมื่อข้อมูลเพิ่มขึ้นหรือไม่ หากคุณอยากเป็นนักพัฒนาอย่างมืออาชีพ การเข้าใจ Big O คือสิ่งที่คุณไม่ควรมองข้าม
บทความนี้ใช้เวลาอ่านประมาณ 10–15 นาที โดยทีมงาน poolsawat.com