โ† Kembali ke DSA
๐Ÿ“ฆ

Struktur Data

Array

Blok memori yang bersebelahan untuk menyimpan elemen bertipe sama, yang bisa diakses lewat index dalam waktu O(1).

Kompleksitas

Waktu (Terbaik)

O(1)

Waktu (Rata-rata)

O(n)

Waktu (Terburuk)

O(n)

Memori

O(n)

Poin Penting

  • โ€บAkses acak O(1): elemen mana pun bisa langsung diambil lewat index
  • โ€บRamah cache: elemen disimpan berurutan di memori
  • โ€บInsert/delete di bagian depan butuh O(n) karena semua elemen harus digeser
  • โ€บDynamic array (ArrayList, Vec) menggandakan kapasitas saat penuh, sehingga append rata-rata O(1) (amortized)
  • โ€บPilihan terbaik saat operasi utamanya adalah akses berdasarkan index

Contoh Kode

Swift
var arr = [1, 2, 3, 4, 5]

// Access โ€” O(1)
let val = arr[2]           // 3

// Append โ€” O(1) amortized
arr.append(6)

// Insert at index โ€” O(n)
arr.insert(0, at: 0)

// Remove at index โ€” O(n)
arr.remove(at: 0)

// Search โ€” O(n)
if let idx = arr.firstIndex(of: 3) {
    print("Found at index \(idx)")
}

// Slice
let sub = arr[1...3]       // [2, 3, 4]

// Iterate โ€” O(n)
for num in arr { print(num) }

Latihan Soal

Two Sum
Best Time to Buy and Sell Stock
Maximum Subarray
Product of Array Except Self