PERTEMUAN 09
Searching Algorithms
SEARCHING ALGORITHMS:
Sequential & Binary
Search
160 menit ยท 22 Slide
Bagaimana cara komputer menemukan jarum dalam tumpukan jerami data?
01 / 22
Konteks Setelah UTS
Dari Struktur Data โ†’ Operasi Data

Kita sudah belajar bagaimana cara menyimpan data:

๐Ÿ“ฆArray: Berurutan & statis.
๐Ÿ”—Linked List: Terhubung & dinamis.

Sekarang pertanyaannya: Bagaimana mencari data di dalamnya?

02 / 22
Studi Kasus
Kasus: Cari Data di 1 Juta Record
CARA 1
Cek satu per satu dari awal sampai akhir.
CARA 2
Gunakan strategi tertentu (misal: bagi dua).

โ“ Mana lebih cepat?

03 / 22
Tujuan Pembelajaran
๐ŸŽฏ Apa yang akan kita capai?
1Memahami konsep dasar Searching.
2Implementasi Sequential Search.
3Implementasi Binary Search.
4Mengenal karakteristik efisiensi pencarian.
04 / 22
Konsep Dasar
Apa itu Searching?

Searching adalah proses menemukan lokasi data tertentu (key) di dalam sebuah koleksi data.

Contoh nyata:

  • Mencari kontak di HP.
  • Mencari NIM di database mahasiswa.
  • Mencari file di dalam folder.
05 / 22
Jenis Searching
Dua Algoritma Utama

1. Sequential Search

Mencari secara linear/berurutan.

2. Binary Search

Mencari dengan membagi dua wilayah pencarian.

06 / 22
Sequential Search
Konsep Sequential Search

Strategi paling sederhana: Cari dari awal sampai akhir sampai ketemu atau data habis.

"Seperti mencari buku satu per satu di rak dari ujung kiri ke kanan."
[10, 20, 30, 40]
Cari: 30
07 / 22
Visualisasi
Visualisasi Sequential Search
Cari angka:
Siap mencari...
08 / 22
Pseudocode
Pseudocode Sequential Search
for i = 0 to n-1:
    if data[i] == key:
        return i  // Ditemukan!
return -1  // Tidak ditemukan

Sangat mudah diimplementasikan dengan for loop atau while loop.

09 / 22
Karakteristik
Karakteristik Sequential Search
๐Ÿ“ˆKecepatan: Berbanding lurus dengan jumlah data.
๐Ÿฅ‡Kasus Terbaik: Data ditemukan di awal (1 kali cek).
๐Ÿ˜ดKasus Terburuk: Data di akhir atau tidak ada (cek semua data).

Kelebihan: Data bebas (tidak perlu urut).
Kekurangan: Lambat untuk data sangat banyak.

10 / 22
Binary Search
Motivasi Binary Search

Bagaimana kalau kita tidak perlu mengecek satu per satu?

"Seperti mencari kata di kamus, kita tidak mulai dari halaman 1, tapi langsung buka di tengah."
11 / 22
Syarat Penting
โš ๏ธ Syarat Mutlak

Binary search hanya bisa bekerja jika data sudah:

TERURUT (SORTED)

[10, 20, 30, 40, 50] // Bisa Binary Search
[40, 10, 50, 20, 30] // TIDAK BISA
12 / 22
Konsep
Cara Kerja Binary Search
1Tentukan nilai tengah (mid).
2Bandingkan data tengah dengan kunci.
3Jika kunci lebih kecil, buang setengah kanan.
4Jika kunci lebih besar, buang setengah kiri.
5Ulangi sampai ketemu atau rentang habis.
13 / 22
Visualisasi
Visualisasi Binary Search
Cari angka:
Siap mencari (Data harus terurut)...
14 / 22
Pseudocode
Pseudocode Binary Search
while left <= right:
    mid = (left + right) / 2
    if data[mid] == key:
        return mid
    else if key < data[mid]:
        right = mid - 1
    else:
        left = mid + 1
return -1
15 / 22
Karakteristik
Karakteristik Binary Search
โšกKecepatan: Sangat efisien, jumlah cek minimal.
๐ŸŽฏKasus Terbaik: Data ditemukan tepat di tengah.
๐Ÿ”Kasus Terburuk: Data ditemukan di ujung rentang terakhir.
Contoh: Untuk 1 juta data, Binary cuma butuh maksimal sekitar 20 kali cek saja!
16 / 22
Praktikum
Instruksi Praktikum

Buatlah program C++ yang mengimplementasikan:

๐Ÿ’ปFungsi sequentialSearch
๐Ÿ’ปFungsi binarySearch

Gunakan array yang sama untuk menguji keduanya (pastikan terurut untuk binary).

17 / 22
Tantangan
๐Ÿ”ฅ Tantangan Ekstra

Modifikasi fungsi pencarianmu agar:

Menghitung dan menampilkan jumlah langkah/iterasi yang dilakukan sampai data ditemukan.

Bandingkan jumlah langkah tersebut untuk data yang sama!

18 / 22
Common Pitfalls
โš ๏ธ Kesalahan Umum
โŒLupa melakukan sorting sebelum Binary Search.
โŒSalah menentukan mid (pembulatan).
โŒKondisi loop (left <= right) yang salah menyebabkan infinite loop.
19 / 22
Ringkasan
๐Ÿ’ก Kesimpulan
๐Ÿ”นSearching adalah operasi menemukan lokasi data.
๐Ÿ”นSequential: Sangat mudah diimplementasikan, bisa untuk data acak.
๐Ÿ”นBinary: Jauh lebih cepat untuk data banyak, tapi data wajib terurut.
20 / 22
Next Meeting
๐Ÿš€ Preview Berikutnya

Pertemuan 10: Sorting Algorithms

Kita akan belajar bagaimana cara mengurutkan data secara efisien agar bisa menggunakan Binary Search!

21 / 22
Selesai
๐Ÿ™ Terima Kasih

Ada pertanyaan tentang pencarian data?

"The more you know about your data, the faster you can find it."