Searching
Menemukan data dengan Linear & Binary Search.
Sorting
Mengurutkan data (Bubble, Selection, Insertion).
Stack
Konsep tumpukan LIFO (Last In First Out).
Queue
Konsep antrean FIFO (First In First Out).
Teori Graf
Hubungan antar objek lewat simpul & sisi.
LKPD
Kerjakan tugas interaktif pertemuan 1-10.
Algoritma Searching
Cara cerdas menemukan jarum di tumpukan jerami.
🔍 Linear Search
Seperti mencari kunci di tas: Kamu cek satu per satu dari atas sampai bawah.
Kekurangan: Sangat capek jika barang di tas ada ribuan.
⚡ Binary Search
Seperti menebak angka 1-100: Kamu tebak 50, jika terlalu kecil, kamu buang angka 1-50.
Kekurangan: Data WAJIB tersusun rapi (A-Z atau 1-100).
🚀 Mengapa Memilih Algoritma yang Tepat?
Perbandingan jumlah maksimal langkah (pengecekan) yang dibutuhkan:
| Jumlah Data (N) | Linear Search (Maks) | Binary Search (Maks) |
|---|---|---|
| 10 Data | 10 Langkah | ~ 4 Langkah |
| 1.000 Data | 1.000 Langkah | ~ 10 Langkah |
| 1.000.000 Data | 1 Juta Langkah (Lama!) | Hanya 20 Langkah! 🚀 |
Linear Search Flowchart
IF data[i] == target THEN
RETURN i
RETURN -1
Binary Search Flowchart
mid = (low + high) / 2
IF data[mid] == target RETURN mid
ELSE IF target > data[mid] low = mid + 1
ELSE high = mid – 1
🎮 Game Simulasi Angka
👨🏫 Panduan: Cara Mengerjakan Tracing
Pelajari contoh lengkap berikut sebelum mengerjakan praktikum. Baca setiap langkah perlahan-lahan.
Pelajari Linear Search
Kita punya array: [10, 25, 30, 42, 55, 68, 80]
Target: cari angka 55
Apa yang saya lakukan?
Lihat kotak kuning → itu elemen yang sedang saya periksa. Angkanya 10.
Bandingkan: 10 == 55 → Tidak sama ❌
Lanjut ke indeks berikutnya →
Apa yang saya lakukan?
Kotak [0] jadi abu-abu karena sudah diperiksa. Kotak kuning sekarang di [1], angkanya 25.
Bandingkan: 25 == 55 → Tidak sama ❌
Lanjut ke indeks berikutnya →
Apa yang saya lakukan?
Sekarang di [2], angkanya 30.
Bandingkan: 30 == 55 → Tidak sama ❌
Lanjut ke indeks berikutnya →
Apa yang saya lakukan?
Sekarang di [3], angkanya 42.
Bandingkan: 42 == 55 → Tidak sama ❌
Lanjut ke indeks berikutnya →
Apa yang saya lakukan?
Sekarang di [4], angkanya 55.
Bandingkan: 55 == 55 → SAMA! ✅
STOP! Angka 55 ditemukan di indeks 4. Selesai!
📌 Inti Cara Kerja Linear Search:
💡 Analogi kehidupan nyata: Kayak mencari kunci di tumpukan kunci. Kamu cek kunci pertama, kedua, ketiga… sampai ketemu (atau tidak ada).
Pelajari Binary Search
Array: [10, 25, 30, 42, 55, 68, 80]
Target: cari angka 68
Syarat WAJIB: Array harus terurut dari kecil ke besar ✅
Apa yang saya lakukan?
LOW = indeks 0, HIGH = indeks 6
MID = (0 + 6) / 2 = 3
array[3] = 42
Bandingkan: 42 < 68 → artinya 68 lebih besar dari 42
Jadi 68 pasti ada di sebelah kanan indeks 3 → abaikan kiri, fokus kanan
LOW diubah jadi 4 (MID + 1)
Apa yang saya lakukan?
LOW = 4, HIGH = 6
MID = (4 + 6) / 2 = 5
array[5] = 68
Bandingkan: 68 == 68 → SAMA! ✅
STOP! Angka 68 ditemukan di indeks 5. Selesai!
📌 Inti Cara Kerja Binary Search:
💡 Analogi kehidupan nyata: Kayak mencari kata di kamus. Kamu buka tengah buku → kata di situ terlalu kecil/kebesar? → buka setengah yang tepat → ulangi sampai ketemu. Jauh lebih cepat dari membaca dari halaman 1!
💡 Tips Mengerjakan Praktikum:
📝 Praktikum Siswa
Kerjakan latihan berikut di buku tulis, lalu cek jawabanmu dengan klik “Lihat Jawaban”.
Tracing Manual — Linear Search
Diberikan array: [7, 15, 3, 22, 9, 31, 18, 5]
Cari angka 22 menggunakan Linear Search. Isilah tabel tracing berikut:
| Langkah | i | array[i] | array[i] == 22? | Aksi |
|---|---|---|---|---|
| 1 | 0 | 7 | ? | … |
| 2 | 1 | 15 | ? | … |
| 3 | 2 | 3 | ? | … |
| 4 | ? | ? | ? | … |
Pertanyaan:
- Berapa langkah yang dibutuhkan untuk menemukan 22?
- Di indeks berapa angka 22 ditemukan?
- Berapa total perbandingan yang dilakukan?
| Langkah | i | array[i] | == 22? | Aksi |
|---|---|---|---|---|
| 1 | 0 | 7 | Tidak | Lanjut |
| 2 | 1 | 15 | Tidak | Lanjut |
| 3 | 2 | 3 | Tidak | Lanjut |
| 4 | 3 | 22 | YA ✅ | STOP — Ditemukan! |
Jawaban:
- 4 langkah
- Ditemukan di indeks 3
- Total perbandingan: 4 kali
Tracing Manual — Binary Search
Array yang sama: [7, 15, 3, 22, 9, 31, 18, 5]
⚠️ PERHATIAN: Array di atas TIDAK terurut! Apa yang terjadi jika kamu langsung menerapkan Binary Search? Mengapa?
Binary Search TIDAK BISA diterapkan pada array ini karena data tidak terurut. Binary Search bergantung pada perbandingan nilai tengah untuk menentukan “ke kiri” atau “ke kanan”. Jika data acak, keputusan ini akan salah.
Contoh: mid = 22, target = 9. Karena 22 > 9, Binary Search akan mencari di kiri. Tapi angka 9 justru ada di kanan indeks 4! Hasilnya: 9 tidak akan pernah ditemukan meskipun ada di array.
Sekarang, urutkan array tersebut terlebih dahulu, lalu lakukan tracing Binary Search untuk mencari angka 18:
Array terurut: [3, 5, 7, 9, 15, 18, 22, 31]
| Langkah | LOW | HIGH | MID | array[MID] | vs 18 | Aksi |
|---|---|---|---|---|---|---|
| 1 | 0 | 7 | ? | ? | ? | … |
| 2 | ? | ? | ? | ? | ? | … |
| 3 | ? | ? | ? | ? | ? | … |
| Langkah | LOW | HIGH | MID | arr[MID] | vs 18 | Aksi |
|---|---|---|---|---|---|---|
| 1 | 0 | 7 | 3 | 9 | 9 < 18 | Cari kanan, LOW=4 |
| 2 | 4 | 7 | 5 | 18 | == 18 ✅ | DITEMUKAN! |
Hanya 2 langkah! Bandingkan dengan Linear Search yang butuh 6 langkah (18 ada di indeks 5 pada array terurut). Ini menunjukkan keunggulan Binary Search pada data terurut.
Perbandingan — Linear vs Binary Search
Array terurut: [2, 5, 8, 12, 16, 23, 38, 45, 56, 67, 78, 89, 91, 95, 100] (15 elemen)
Hitung jumlah langkah yang dibutuhkan untuk mencari angka berikut dengan kedua algoritma:
| Target | Linear Search (langkah) |
Binary Search (langkah) |
Lebih efisien? |
|---|---|---|---|
| 2 | ? | ? | ? |
| 56 | ? | ? | ? |
| 100 | ? | ? | ? |
| 50 | ? | ? | ? |
Pertanyaan refleksi:
- Kapan Linear Search lebih efisien dari Binary Search?
- Apakah selisih langkah selalu sama untuk setiap target?
- Jika array berisi 1.000.000 elemen, perkirakan selisih langkah untuk target di tengah!
| Target | Linear | Binary | Lebih efisien? |
|---|---|---|---|
| 2 | 1 | 4 | Linear ✅ |
| 56 | 8 | 3 | Binary ✅ |
| 100 | 15 | 4 | Binary ✅ |
| 50 | 15 | 4 | Binary ✅ |
Refleksi:
- Linear Search lebih efisien saat target ada di awal sekali array (contoh: angka 2 hanya butuh 1 langkah, Binary butuh 4). Tapi ini kasus terbaik — secara rata-rata, Binary tetap jauh lebih cepat.
- Tidak selalu sama. Tergantung posisi target. Target di awal → Linear menang. Target di tengah/akhir → Binary menang jauh.
- Linear: ~500.000 langkah. Binary: ⌈log₂1.000.000⌉ = 20 langkah. Selisihnya fenomenal!
Analisis Skenario Nyata
Tentukan algoritma searching yang paling tepat untuk setiap skenario berikut. Jelaskan alasanmu!
Skenario A:
Seorang guru mencari nama “Ahmad” dalam daftar hadir 30 siswa yang tidak diurutkan berdasarkan nama.
Pilihan: Linear Search / Binary Search — Alasan: …
Skenario B:
Aplikasi kamus digital mencari kata “algoritma” dalam database 50.000 kata yang diurutkan alfabet.
Pilihan: Linear Search / Binary Search — Alasan: …
Skenario C:
Seorang siswa baru saja menerima 5 nilai ujian dan ingin mengecek apakah nilainya ada yang sama dengan nilai temannya yang sudah diurutkan.
Pilihan: Linear Search / Binary Search — Alasan: …
Skenario A → Linear Search
Data tidak terurut → Binary Search tidak bisa digunakan. Linear Search satu-satunya pilihan. Dengan 30 data, waktu pencarian tetap sangat cepat.
Skenario B → Binary Search
Data terurut (50.000 kata) → Binary Search sangat ideal. Hanya butuh ~16 langkah (log₂50.000), dibanding Linear yang butuh sampai 50.000 langkah. Perbedaan 3.000x lebih cepat!
Skenario C → Binary Search
Data teman sudah terurut → Binary Search bisa dipakai. Meskipun hanya 5 nilai, prinsip yang sama berlaku. Ini juga melatih siswa untuk selalu mempertimbangkan Binary Search ketika data terurut, berapa pun ukurannya.
💡 Kesimpulan kunci: Pilihan algoritma TIDAK hanya didasarkan pada ukuran data, tapi juga pada sifat data (terurut atau tidak). Ini adalah kemampuan berpikir komputasional yang penting!
Reverse Engineering — Tebak Target!
Diberikan log langkah Binary Search berikut. Tentukan angka berapa yang sedang dicari dan di indeks berapa ditemukan!
Array: [4, 11, 19, 27, 33, 42, 55, 68, 74, 81, 90, 97]
Pertanyaan:
- Berapa angka target yang dicari?
- Di indeks berapa ditemukan?
- Mengapa di langkah 1, 42 < target artinya cari ke kanan (LOW=6)?
- Target = 68 (karena di langkah 4, arr[7]=68 dan cocok dengan target)
- Ditemukan di indeks 7
- Karena array terurut ascending (kecil ke besar). Jika arr[MID] < target, artinya target pasti lebih besar dari MID, sehingga harus ada di sebelah kanan MID. Jadi kita geser LOW ke MID+1 untuk mempersempit pencarian ke setengah kanan.
💡 Tips mengerjakan soal seperti ini: Baca log dari bawah ke atas! Langkah terakhir langsung memberitahu arr[7] = target. Lalu kerjakan ke atas untuk memahami alur keputusannya.
🎯 Uji Pemahaman: Searching
Sorting (Pengurutan)
Menyusun data dari terkecil ke terbesar atau sebaliknya.
🎮 Visualisasi Sorting
🎯 Kuis Sorting
Stack (Tumpukan)
Prinsip LIFO: Last In First Out.
🎮 Simulasi Tumpukan
📖 Ringkasan Stack
Analogi: Tumpukan piring. Piring terakhir yang diletakkan adalah yang pertama diambil.
Queue (Antrean)
Prinsip FIFO: First In First Out.
🎮 Simulasi Antrean
Teori Graf
Memodelkan hubungan antar objek dalam jaringan.
🗺️ Simulasi Jaringan (Graf)
💡 Studi Kasus
Google Maps
Simpul adalah persimpangan jalan, dan Sisi adalah jalan yang menghubungkannya.
Media Sosial
Simpul adalah profil pengguna, dan Sisi adalah hubungan pertemanan atau follower.
Lembar Kerja (LKPD)
Kerjakan dan simpan progres belajarmu.