Array & Operasinya — Struktur Data

Array adalah struktur data paling dasar — kumpulan elemen yang disimpan secara berurutan di memori. Operasi array dan kompleksitasnya: Operasi Kompleksitas…

Array adalah daftar yang isinya disimpan berjajar rapat, tanpa celah, dan tiap isi punya nomor urut (index) yang mulai dari 0. Di pelajaran ini kamu melihat berapa banyak kerja yang dibutuhkan tiap operasi: membaca, menambah, menyisipkan, dan menghapus. Bayangin deretan kursi bioskop yang terisi tanpa celah: duduk di kursi paling ujung itu gampang, tapi menyelip di tengah bikin semua orang di sebelah kanan harus geser satu kursi.

🧪 Tebakan cepat: push ke array berisi 5 isi dan push ke array berisi sejuta isi, mana yang lebih lama? Tebak dulu, jawabannya ada di bagian "Cepat di ujung, lambat di tengah".

Lima operasi pada satu array

Mulai dari [10, 20, 30, 40, 50], lalu jalankan lima operasi ini berurutan:

Langkah Kode Yang digeser Isi arr sesudahnya
1 arr[2] tidak ada (hasilnya 30) [10, 20, 30, 40, 50]
2 arr.push(60) tidak ada [10, 20, 30, 40, 50, 60]
3 arr.splice(3, 0, 35) 40, 50, 60 ke kanan [10, 20, 30, 35, 40, 50, 60]
4 arr.splice(0, 1) 6 isi ke kiri [20, 30, 35, 40, 50, 60]
5 arr.pop() tidak ada [20, 30, 35, 40, 50]
const arr = [10, 20, 30, 40, 50];

console.log(arr[2]);  // 30
arr.push(60);         // [10, 20, 30, 40, 50, 60]
arr.splice(3, 0, 35); // [10, 20, 30, 35, 40, 50, 60]
arr.splice(0, 1);     // [20, 30, 35, 40, 50, 60]
arr.pop();            // [20, 30, 35, 40, 50]
console.log(arr);     // [20, 30, 35, 40, 50]

Cepat di ujung, lambat di tengah

Karena array gak boleh punya celah, kerjanya tergantung posisi:

Programmer menulis ini dengan Big O. O(1) artinya jumlah langkahnya tetap, berapa pun panjang array. O(n) artinya langkahnya ikut bertambah sesuai jumlah isi (n): datanya dua kali lipat, waktunya kira-kira dua kali lipat.

Operasi Contoh Big O
Baca lewat index arr[2] O(1)
Baca panjang array arr.length O(1)
Tambah atau buang di akhir push, pop O(1)
Sisip atau hapus di tengah atau di awal splice, unshift, shift O(n)
Cari nilai includes, indexOf O(n)

Jadi array paling pas untuk data berurutan yang sering dibaca lewat index, dan ditambah atau dibuang di ujung belakang.

💡 Kenapa baca lewat index bisa langsung? Isi array disimpan berdempetan di memori. Komputer tahu alamat isi pertama, jadi alamat isi di index i cukup dihitung: alamat awal ditambah i kali ukuran satu isi. Satu hitungan, berapa pun panjang array-nya. push sesekali butuh kerja ekstra waktu array dipindah ke tempat yang lebih besar, tapi kalau dirata-rata, tiap push tetap O(1).

⚠️ Jebakan yang sering ketemu

TL;DR: Array menyimpan isi berjajar tanpa celah, dengan index mulai dari 0. Membaca lewat index (arr[2]), membaca length, serta push dan pop di akhir semuanya O(1): langkahnya tetap berapa pun panjang array. Menyisipkan atau menghapus di tengah atau di awal (splice, unshift, shift) dan mencari nilai (includes) itu O(n), karena isi lain harus digeser atau dicek satu per satu. arr.splice(i, 1) menghapus satu isi di index i, dan arr.splice(i, 0, x) menyisipkan x di sana.

Yang akan kamu pelajari