โ 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
MudahLeetCode โ
Best Time to Buy and Sell Stock
MudahLeetCode โ
Maximum Subarray
SedangLeetCode โ
Product of Array Except Self
SedangLeetCode โ