Big O Notation — Struktur Data

Big O Notation mengukur seberapa cepat atau lambat suatu operasi seiring bertambahnya jumlah data. Notasi yang paling umum (dari tercepat ke terlambat): Big O N

Big O Notation mengukur seberapa cepat atau lambat suatu operasi seiring bertambahnya jumlah data.

Notasi yang paling umum (dari tercepat ke terlambat):

Big O Nama Contoh
O(1) Constant Akses array by index
O(log n) Logarithmic Binary search
O(n) Linear Loop seluruh array
O(n log n) Linearithmic Merge sort, quick sort
O(n²) Quadratic Nested loop (bubble sort)
O(2ⁿ) Exponential Fibonacci rekursif tanpa memo

Cara membaca Big O:

// O(1) — Constant
function getFirst(arr) {
  return arr[0]; // Selalu 1 operasi, berapapun ukuran array
}

// O(n) — Linear
function findItem(arr, target) {
  for (let i = 0; i < arr.length; i++) { // Loop sebanyak n
    if (arr[i] === target) return i;
  }
  return -1;
}

// O(n²) — Quadratic
function hasDuplicate(arr) {
  for (let i = 0; i < arr.length; i++) {     // n kali
    for (let j = i + 1; j < arr.length; j++) { // n kali
      if (arr[i] === arr[j]) return true;
    }
  }
  return false;
}

Perbedaan nyata saat n = 1.000.000:

Selalu pilih algoritma dengan Big O terkecil yang memungkinkan.

🎭 Analogi sehari-hari: Cari nama "Budi" di buku telpon.

💡 Kenapa konstanta diabaikan? O(2n) ditulis O(n) — bukan karena konstanta gak penting, tapi saat n besar, perbedaan algoritma O(n) vs O(n²) jauh lebih besar daripada konstanta apapun. n=1jt: O(2n)=2jt, O(n²)=1 triliun. Konstanta kalah jauh.

⚠️ Jebakan umum:

🎯 Cara cepat tebak Big O:

  1. Loop sekali atas n = O(n)
  2. Loop bersarang atas n = O(n²)
  3. Membagi data tiap iterasi = O(log n)
  4. Rekursi memanggil 2x dengan n/2 = O(n log n)
  5. Akses langsung tanpa loop = O(1)

🧪 Tebakan cepat: for (i=0; i<n; i++) for (j=0; j<i; j++) — Big O? Total operasi = 0+1+2+...+n-1 = n(n-1)/2 ≈ n²/2 = O(n²). Konstanta hilang.

TL;DR: Big O = pertumbuhan operasi seiring n bertambah, bukan waktu detik. Ukur skenario worst case. Konstanta diabaikan.

Yang akan kamu pelajari