Big O Notation คืออะไร? ทำไมคนเขียนโปรแกรมควรรู้

Sharing is caring!

บทนำ

คุณเคยสงสัยไหมว่าทำไมบางโปรแกรมรันเร็ว บางโปรแกรมกลับช้ามาก? หนึ่งในวิธีการวัดประสิทธิภาพของอัลกอริธึมคือการใช้ Big O Notation ซึ่งเป็นภาษาสากลของนักพัฒนาในการอธิบายเวลาในการประมวลผลหรือความซับซ้อนของโค้ด

บทความนี้จะพาคุณเข้าใจ Big O อย่างเป็นขั้นตอน พร้อมตัวอย่างและภาพประกอบ เหมาะสำหรับผู้เริ่มต้นหรือคนที่ต้องเตรียมตัวเข้าสัมภาษณ์งานเขียนโปรแกรม


Big O Notation คืออะไร?

Big O Notation คือการวัดว่า ประสิทธิภาพของอัลกอริธึม แปรผันตามขนาดของข้อมูล (n) อย่างไร โดยเฉพาะในแง่ของเวลา (Time Complexity) และพื้นที่หน่วยความจำ (Space Complexity)

Big O Graph Examples

ตัวอย่าง 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 Cheat Sheet

สรุป

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

บทความนี้ใช้เวลาอ่านประมาณ 10–15 นาที โดยทีมงาน poolsawat.com

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *