บทนำ
คุณเคยสงสัยไหมว่าทำไมบางโปรแกรมรันเร็ว บางโปรแกรมกลับช้ามาก? หนึ่งในวิธีการวัดประสิทธิภาพของอัลกอริธึมคือการใช้ 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