Algoritma Searching
Algoritma Searching
PENCARIAN
(SEARCHING)
Sub Topik
• Algoritma Pencarian
• Linear Search
• Binary Search
Algoritma Pencarian
Searching
• Searching adalah proses pencarian data yang ada pada suatu
deret data dengan cara menelusuri data-data tersebut.
• Tahapan paling penting : memeriksa jika data yang dicari sama
dengan data yang ada pada deret data.
• Macam algoritma pencarian :
• Linear Search
• Binary Search
Searching
Single match
Siapa mahasiswa dengan Nim
0800123456
Multiple match
Siapa saja yang mendapat nilai
Algoritma >= 85
5
Linear Search
Linear Search
• Metode pencarian beruntun atau linear atau sequential
search.
• Adalah suatu teknik pencarian data yang akan menelusuri tiap
elemen satu per-satu dari awal sampai akhir.
• Suatu deret data dapat disimpan dalam bentuk array maupun
linked list.
Sequential/Linier Search
• Disebut juga linear search atau Metode
pencarian beruntun.
• Tidak efisien untuk data yang list yang
besar
• Adalah suatu teknik pencarian data yang
akan menelusuri tiap elemen satu per-satu
dari awal sampai akhir.
• Data awal = tidak harus dalam kondisi
terurut.
Algoritma Sequential Search
1. Input x (data yang dicari)
2. Bandingkan x dengan data ke-i sampai n
3. Jika ada data yang sama dengan x maka cetak pesan “Ada”
4. Jika tidak ada data yang sama dengan x cetak pesan “tidak
ada”
Case
Best case : jika data yang dicari terletak di indeks array
terdepan (elemen array pertama) sehingga waktu yang
dibutuhkan untuk pencarian data sangat sebentar (minimal).
Worst case : jika data yang dicari terletak di indeks array
terakhir (elemen array terakhir) sehingga waktu yang
dibutuhkan untuk pencarian data sangat lama (maksimal).
Contoh
• Misalnya terdapat array satu dimensi sebagai berikut:
0 1 2 3 4 5 6 7
indeks
8 10 6 -2 11 7 1 100 value
13
Contoh Sequential Search
Kunci pencarian? 2207023007
NIM[0] == kunci? tidak
NIM[1] == kunci? tidak
NIM[2] == kunci? tidak
NIM[3] == kunci? ya Ferry Santoso, 3.37
14
Contoh Sequential Search
Kunci pencarian? 2207023010
NIM[0] == kunci? tidak
NIM[1] == kunci? tidak
NIM[2] == kunci? tidak
NIM[3] == kunci? tidak
NIM[4] == kunci? tidak
NIM[5] == kunci? tidak
NIM[6] == kunci? tidak
NIM[7] == kunci? tidak
Semua data telah di cari, kunci tidak ditemukan
15
Algoritma
Q&A
• Problem: Apakah cara di atas efisien? Jika datanya ada
10000 dan semua data dipastikan unik?
• Solution: Untuk meningkatkan efisiensi, seharusnya jika
data yang dicari sudah ditemukan maka perulangan
harus dihentikan!
• Hint: Gunakan break!
• Question: Bagaimana cara menghitung ada berapa data
dalam array yang tidak unik, yang nilainya sama dengan
data yang dicari oleh user?
• Hint: Gunakan variabel counter yang nilainya akan selalu
bertambah jika ada data yang ditemukan!
Binary Search
Binary Search
• Menggunakan Binary Search, jika :
• Nilai-nilai tersebut sudah berurutan (ascending). Disimpan dalam
bentuk larik (array) atau struktur data sejenis.
• Pencarian data dimulai dari pertengahan data yang telah terurut
Algoritma Binary Search
1. Data diambil dari posisi 1 sampai posisi akhir N
2. Kemudian cari posisi data tengah dengan rumus:
(posisi awal + posisi akhir) / 2
3. Kemudian data yang dicari dibandingkan dengan
data yang di tengah, apakah sama atau lebih kecil,
atau lebih besar?
4. Jika lebih besar, maka proses pencarian dicari
dengan posisi awal adalah posisi tengah + 1
5. Jika lebih kecil, maka proses pencarian dicari
dengan posisi akhir adalah posisi tengah – 1
6. Jika data sama, berarti ketemu.
Algoritma Binary Search
N: banyak record array x
1. kiri = 0 dan kanan = N-1
2. tengah = (kiri+kanan)/2
3. jika x[tengah]=kunci maka indeks = tengah. Selesai
4. jika x[tengah]<kunci maka kiri = tengah+1
5. jika x[tengah]>kunci maka kanan = tengah-1
6. jika kiri<kanan dan x[tengah]<>kunci
maka ulangi mulai dari 2
7. jika x[tengah]<>kunci maka indeks=-1
8.selesai
21
Contoh 1
Contoh 2
Best & Worst Case
• Best case : jika data yang dicari terletak di posisi tengah.
• Worst case : jika data yang dicari tidak ditemukan.
• Contoh :
DATA = 5 6 9 2 8 1 7 4 3
bestcase ketika x = 8 (T(n)=1)
worstcase ketika x = 25 (T(n) = 5 atau n/2)
*x = key/data yang dicari
Masalah
Latihan
Misalnya data yang dicari
Kasus 1: 23 (X = 23)
39 11 12 15 17 23 31 35
Kasus 2: 23 (X = 11)
Ilustrasi
Contoh Data:
Misalnya data yang dicari 23 (X = 23)
Iterasi 1
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A B C
Karena 23 > 15 (data tengah), maka: awal = tengah + 1
Iterasi 2
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A B C
• 0 1 2 3 4 5 6 7 8
• 3 9 11 12 15 17 23 31 35
• A B C
• Karena 17 < 23 (data tengah), maka: akhir = tengah – 1
• 0 1 2 3 4 5 6 7 8
• 3 9 11 12 15 17 23 31 35
• A=B=C
• Karena 17 = 17 (data tengah), maka KETEMU!