Tugas 12 Aril Firmansyah
Berikut adalah pembedahan kodenya satu per satu:
1. Linear Search (Gambar 14888.png)
Konsep Dasar:
Linear Search adalah metode pencarian data yang paling sederhana. Algoritma ini mengecek setiap elemen dalam daftar (list) satu per satu dari awal hingga akhir sampai data yang dicari ditemukan.
Analisis Kode:
Fungsi linear_search(data, target):
for i in range(len(data)): Melakukan perulangan (looping) sebanyak jumlah data.
print(f" -> Cek indeks [{i}]...: Baris ini berfungsi untuk debugging atau visualisasi, agar kita bisa melihat proses komputer mengecek satu per satu.
if data[i] == target: Jika angka pada indeks saat ini sama dengan angka yang dicari, maka fungsi mengembalikan (return) posisi indeks tersebut.
return -1: Jika perulangan selesai dan angka tidak ditemukan, kembalikan nilai -1 (kode umum untuk "data tidak ada").
Eksekusi (Output):
Mencari angka 23: Komputer mengecek indeks 0 (nilai 3), indeks 1 (nilai 9), dst... hingga indeks ke-6 (nilai 23). Karena ditemukan, ia berhenti.
Mencari angka 31: Ia mengecek dari awal lagi hingga menemukan 31 di indeks ke-7.
Kelebihan & Kekurangan:
(+) Bisa digunakan pada data yang tidak berurutan (acak).
(-) Sangat lambat untuk data yang besar (jika ada 1 juta data dan angka yang dicari ada di posisi terakhir, ia harus mengecek 1 juta kali).
2. Binary Search (Gambar 14889.png)
Konsep Dasar:
Binary Search jauh lebih efisien tetapi hanya bisa bekerja pada data yang sudah terurut (sorted). Caranya adalah dengan membagi data menjadi dua bagian terus menerus.
Analisis Kode:
Fungsi binary_search(data, target):
low = 0 dan high = len(data) - 1: Menentukan batas kiri dan kanan pencarian.
mid = (low + high) // 2: Rumus ini mencari titik tengah. Tanda // artinya pembagian bilangan bulat (dibulatkan ke bawah).
Logika Seleksi:
Jika data[mid] == target: Ketemu! Kembalikan indeks mid.
elif data[mid] < target: Jika nilai tengah lebih kecil dari target, berarti target ada di sebelah kanan. Maka batas kiri (low) digeser ke mid + 1.
else: Jika nilai tengah lebih besar dari target, berarti target ada di sebelah kiri. Maka batas kanan (high) digeser ke mid - 1.
Eksekusi (Output) - Contoh Mencari Angka 23:
Langkah 1:
Low: 0, High: 8.
Mid: Indeks 4 (Nilai 15).
Karena 23 > 15, kita cari di kanan (abaikan semua angka di kiri 15).
Langkah 2:
Low: 5 (digeser), High: 8.
Mid: Indeks 6 (Nilai 23).
Ketemu! Data[6] adalah 23.
Kelebihan & Kekurangan:
(+) Sangat cepat. Untuk mencari angka 23, Linear Search butuh 7 langkah, sedangkan Binary Search hanya butuh 2 langkah.
(-) Data wajib diurutkan terlebih dahulu.
Perbandingan Ringkas
Penjelasan Bagian "NIM Ganjil/Genap"
Pada kedua kode, terdapat logika if-else untuk menentukan angka yang dicari berdasarkan NIM (Nomor Induk Mahasiswa):
NIM Ganjil: Diminta mencari angka 23.
NIM Genap:
Di Linear Search diminta mencari 31.
Di Binary Search diminta mencari 11.
Ini adalah simulasi tugas kuliah agar setiap mahasiswa mengerjakan kasus uji (test case) yang berbeda sesuai digit terakhir NIM mereka.


Komentar
Posting Komentar