๐งญ 1. Pengertian Searching
7
๐ Definisi
Searching adalah proses menemukan elemen tertentu dalam kumpulan data (struktur data).
๐ง Narasi Konseptual
Bayangkan kamu mencari satu nama di daftar absensi:
- Tanpa metode โ membaca satu per satu
- Dengan metode โ bisa langsung menuju posisi tertentu
โก๏ธ Searching bertujuan mempercepat proses menemukan data.
๐ฏ 2. Tujuan Searching
๐ Tabel Tujuan
| Tujuan | Penjelasan |
|---|---|
| Menemukan data | Mencari elemen tertentu |
| Efisiensi | Mengurangi waktu pencarian |
| Validasi data | Mengecek keberadaan data |
| Sistem informasi | Dasar query database |
๐ 3. Jenis-Jenis Searching
๐ Tabel Kategori
| Jenis | Kondisi Data | Efisiensi |
|---|---|---|
| Linear Search | Tidak terurut | O(n) |
| Binary Search | Terurut | O(log n) |
๐ 4. Linear Search (Pencarian Linear)
6
๐ Konsep
Linear Search adalah metode pencarian dengan memeriksa elemen satu per satu dari awal hingga akhir.
๐ง Narasi
Seperti mencari nama di daftar:
- Mulai dari atas
- Cek satu per satu
- Berhenti jika ditemukan
๐ป Contoh Program
for(int i=0; i<n; i++){
if(arr[i] == key){
cout << "Data ditemukan di index " << i;
break;
}
}
โฑ๏ธ Kompleksitas
- Best: O(1)
- Worst: O(n)
โก 5. Binary Search (Pencarian Biner)
7
๐ Konsep
Binary Search adalah metode pencarian pada data yang sudah terurut, dengan cara membagi data menjadi dua bagian.
๐ง Narasi
Seperti mencari kata di kamus:
- Tidak membaca satu per satu
- Langsung ke tengah
- Lalu pilih kiri atau kanan
๐ Langkah Binary Search
- Tentukan middle (tengah)
- Bandingkan dengan data target
- Jika lebih kecil โ ke kiri
- Jika lebih besar โ ke kanan
- Ulangi sampai ditemukan
๐ป Contoh Program
int binarySearch(int arr[], int n, int key){
int low = 0, high = n-1; while(low <= high){
int mid = (low + high) / 2; if(arr[mid] == key)
return mid;
else if(arr[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1;
}
โฑ๏ธ Kompleksitas
โก๏ธ O(log n)
๐ 6. Perbandingan Linear vs Binary Search
๐ Tabel Perbandingan
| Aspek | Linear Search | Binary Search |
|---|---|---|
| Data | Tidak perlu terurut | Harus terurut |
| Metode | Sequential | Divide & conquer |
| Kecepatan | Lambat | Cepat |
| Kompleksitas | O(n) | O(log n) |
๐ง 7. Ilustrasi Perbandingan Searching
8
โ๏ธ 8. Analisis Kompleksitas Searching
๐ Tabel Kompleksitas
| Algoritma | Best Case | Worst Case |
|---|---|---|
| Linear Search | O(1) | O(n) |
| Binary Search | O(1) | O(log n) |
๐ง Narasi
- Linear Search โ semakin besar data, semakin lambat
- Binary Search โ sangat efisien untuk data besar
๐งช 9. Studi Kasus Nyata
๐ Sistem Absensi Mahasiswa
- Data kecil โ Linear Search cukup
- Data besar โ Binary Search lebih efektif
๐ Mesin Pencari
- Google menggunakan algoritma kompleks (gabungan indexing + searching)
๐ 10. Hubungan Searching dengan Sorting
๐ง Narasi
Binary Search tidak bisa dilakukan tanpa sorting.
โก๏ธ Alur:
Sorting โ Searching โ Output
๐ป 11. Implementasi Python Sederhana
# Linear Search
data = [10, 20, 30, 40]
key = 30for i in range(len(data)):
if data[i] == key:
print("Ditemukan di index", i)
โ ๏ธ 12. Kelebihan dan Kekurangan
๐ Tabel
| Metode | Kelebihan | Kekurangan |
|---|---|---|
| Linear Search | Mudah | Lambat |
| Binary Search | Cepat | Harus sorted |
๐ง 13. Kapan Menggunakan Masing-Masing?
๐ Panduan
| Kondisi | Metode |
|---|---|
| Data kecil | Linear Search |
| Data besar & terurut | Binary Search |
| Data tidak terurut | Linear Search |
๐ 14. Ringkasan Materi
- Searching adalah proses menemukan data
- Ada dua metode utama: Linear & Binary Search
- Linear Search sederhana tetapi lambat
- Binary Search cepat tetapi butuh data terurut
- Kompleksitas sangat penting dalam pemilihan algoritma
๐ 15. Latihan / Diskusi
โ๏ธ Soal Teori
- Jelaskan pengertian searching
- Apa perbedaan linear dan binary search?
- Mengapa binary search harus data terurut?
๐ป Soal Praktikum
- Implementasikan linear search
- Implementasikan binary search
- Bandingkan hasil keduanya
๐ฏ Penutup
Searching adalah fondasi penting dalam struktur data dan sistem informasi modern, karena:
- Digunakan di database
- Digunakan di mesin pencari
- Menjadi dasar algoritma lanjutan