Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran
Sisipkan elemen ke array baru, hapus berdasarkan indeks dengan menggeser ke kiri, dan latih pemeriksaan batas yang aman.
Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.
Gambaran Umum Penyisipan
Sisipkan ke dalam larik biasa biasanya dengan membuat larik baru yang memiliki satu posisi tambahan. Salin elemen sebelum posisi tersebut, tempatkan nilai baru, lalu salin sisa elemen dengan menggesernya satu posisi.
Sisipkan ke Larik Baru
Sisipkan pada indeks i ke dalam larik baru:
public class Main {
// Method to insert a value at a given index
static int[] insertAt(int[] a, int i, int val) {
// Create a new array, one element larger
int[] b = new int[a.length + 1];
// Copy elements before the insertion index
for (int p = 0; p < i; p = p + 1) {
b[p] = a[p];
}
// Insert the new value at position i
b[i] = val;
// Copy the rest of the elements after position i
for (int p = i; p < a.length; p = p + 1) {
b[p + 1] = a[p];
}
return b;
}
public static void main(String[] args) {
// Example array
int[] a = {5, 8, 9, 12};
// Insert 99 at index 2 (between 8 and 9)
int[] b = insertAt(a, 2, 99);
// Print new array
System.out.print("Array after insertion: ");
for (int x : b) {
System.out.print(x + " ");
}
}
}
Hapus dan Geser
Hapus berdasarkan indeks dengan menggeser elemen ke kiri dan mengosongkan sel terakhir:
public class Main {
// Method to delete an element at index k
static void deleteAt(int[] a, int k) {
// Shift elements to the left, starting from index k
for (int i = k; i < a.length - 1; i = i + 1) {
a[i] = a[i + 1];
}
// Clear the last element (since it's now duplicated)
a[a.length - 1] = 0;
}
public static void main(String[] args) {
// Example array
int[] a = {5, 8, 9, 12, 15};
// Delete element at index 2 (value = 9)
deleteAt(a, 2);
// Print updated array
System.out.print("Array after deletion: ");
for (int x : a) {
System.out.print(x + " ");
}
}
}
Pemeriksaan Batas
Pemeriksaan batas membantu menghindari kesalahan saat dijalankan. Indeks yang valid untuk n elemen adalah 0..n-1. Untuk penyisipan, i yang valid adalah 0..n.
public class Main {
// Insert a value at a given index
static int[] insertAt(int[] a, int i, int val) {
// Validate index (0 ≤ i ≤ a.length is allowed for insert)
if (i < 0 || i > a.length) {
throw new IllegalArgumentException("bad index");
}
int[] b = new int[a.length + 1];
for (int p = 0; p < i; p++) b[p] = a[p];
b[i] = val;
for (int p = i; p < a.length; p++) b[p + 1] = a[p];
return b;
}
// Delete a value at a given index
static void deleteAt(int[] a, int k) {
// Validate index (0 ≤ k < a.length is required for delete)
if (k < 0 || k >= a.length) {
throw new IllegalArgumentException("bad index");
}
for (int i = k; i < a.length - 1; i++) {
a[i] = a[i + 1];
}
a[a.length - 1] = 0; // clear the last slot
}
public static void main(String[] args) {
int[] a = {5, 8, 9, 12};
// Test insert
int[] b = insertAt(a, 2, 99);
System.out.print("After insert: ");
for (int x : b) System.out.print(x + " ");
System.out.println();
// Test delete
deleteAt(b, 3);
System.out.print("After delete: ");
for (int x : b) System.out.print(x + " ");
}
}
Hapus dengan Larik Baru
Buat salinan yang lebih kecil dengan melewati indeks k:
public class Main {
// Method to create a new array without the element at index k
static int[] without(int[] a, int k) {
// Validate index
if (k < 0 || k >= a.length) {
throw new IllegalArgumentException("bad index");
}
// New array has one fewer element
int[] b = new int[a.length - 1];
// Copy elements before k
for (int p = 0; p < k; p = p + 1) {
b[p] = a[p];
}
// Copy elements after k (shift left by one)
for (int p = k + 1; p < a.length; p = p + 1) {
b[p - 1] = a[p];
}
return b;
}
public static void main(String[] args) {
int[] a = {5, 8, 9, 12, 15};
// Remove element at index 2 (value = 9)
int[] b = without(a, 2);
// Print original
System.out.print("Original array: ");
for (int x : a) System.out.print(x + " ");
System.out.println();
// Print new array
System.out.print("Array without index 2: ");
for (int x : b) System.out.print(x + " ");
}
}
Demonstrasi Penyisipan/Penghapusan
Jalankan: Lihat penyisipan ke larik baru, penghapusan di tempat dengan penggeseran ke kiri, dan penghapusan melalui penyalinan.
public class Main {
static int[] insertAt(int[] a, int i, int val) {
if (i < 0 || i > a.length) throw new IllegalArgumentException("bad index");
int[] b = new int[a.length + 1];
for (int p = 0; p < i; p = p + 1) b[p] = a[p];
b[i] = val;
for (int p = i; p < a.length; p = p + 1) b[p + 1] = a[p];
return b;
}
static void deleteAtShift(int[] a, int k) {
if (k < 0 || k >= a.length) throw new IllegalArgumentException("bad index");
for (int i = k; i < a.length - 1; i = i + 1) {
a[i] = a[i + 1];
}
a[a.length - 1] = 0;
}
static int[] without(int[] a, int k) {
if (k < 0 || k >= a.length) throw new IllegalArgumentException("bad index");
int[] b = new int[a.length - 1];
for (int p = 0; p < k; p = p + 1) b[p] = a[p];
for (int p = k + 1; p < a.length; p = p + 1) b[p - 1] = a[p];
return b;
}
static String join(int[] a) {
String s = "";
for (int i = 0; i < a.length; i = i + 1) {
s = s + a[i] + (i + 1 < a.length ? " " : "");
}
return s;
}
public static void main(String[] args) {
int[] a = {10, 20, 30, 40};
System.out.println("a = " + join(a));
int[] b = insertAt(a, 2, 99);
System.out.println("insertAt(2) = " + join(b));
deleteAtShift(a, 1);
System.out.println("deleteAt(1) = " + join(a));
int[] c = without(b, 3);
System.out.println("without(3) = " + join(c));
}
}
Pemeriksaan Penghapusan dan Penggeseran
Pemeriksaan singkat: Potongan kode mana yang menghapus pada indeks k dengan menggeser ke kiri dan mengosongkan posisi terakhir?
Rangkuman dan Berikutnya
Rangkuman: Anda telah menyisipkan dengan larik baru, menghapus dengan penggeseran ke kiri, dan membuat salinan yang lebih kecil. Selalu periksa batas.
Berikutnya: Beralih ke larik objek dan algoritma sederhana seperti menghitung frekuensi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran” gratis?
Ya — teks lengkap “Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran”?
Sisipkan elemen ke array baru, hapus berdasarkan indeks dengan menggeser ke kiri, dan latih pemeriksaan batas yang aman. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.
Berapa lama pelajaran “Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Array dan Iterasi
- Pencarian, Nilai Minimum/Maksimum, dan Pembalikan
- Penyisipan, Penghapusan Berdasarkan Indeks, dan Pergeseran