240 likes | 396 Views
Searching. Struktur Data. Searching. Linier Search. Mencari dari data pertama sampai data terakhir Pencarian selesai jika ketemu atau sudah habis. Searching. Liniear Search. 7. Angka yang dicari :. Angka yang ke 1 = 7 ?. Tidak. If Angka[1] = ygDicari then. Searching.
E N D
Searching Struktur Data
Searching Linier Search • Mencari dari data pertama sampai data terakhir • Pencarian selesai jika ketemu atau sudah habis
Searching Liniear Search 7 Angka yang dicari : Angka yang ke 1 = 7 ? Tidak If Angka[1] = ygDicari then
Searching Liniear Search 7 Angka yang dicari : Angka yang ke 2 = 7 ? Tidak If Angka[2] = ygDicari then
Searching Liniear Search 7 Angka yang dicari : Angka yang ke 3 = 7 ? Tidak If Angka[3] = ygDicari then
Searching Liniear Search 7 Angka yang dicari : Angka yang ke 4 = 7 ? Tidak If Angka[4] = ygDicari then
Searching Liniear Search 7 Angka yang dicari : Angka yang ke 5 = 7 ? Tidak If Angka[5] = ygDicari then
KETEMU? • Mana angka 7 ? • Setelah dicari sampai habis ternyata tidak ada
Kesimpulan • Ada 5 perintah IF If Angka[1] = ygDicari then If Angka[2] = ygDicari then If Angka[3] = ygDicari then If Angka[4] = ygDicari then If Angka[5] = ygDicari then
Disederhanakan • Berapa lama pencarian dilakukan • Manusia ingin yang tercepat For i := 1 to 5 do begin If Angka[i] = ygDicari then Ketemu = True end
Searching Binary Search • Data angka harus urut (kecil kebesar, atau sebaliknya) • Data dibandingkan dengan data yang ditengah ( Angka[NT] ) • NT = (BB + BA) / 2 • Pencarian selesai jika ketemu atau BA < BB
Searching Binary Search 7 Angka yang dicari : BB = 1 = 5 BA NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3
Searching Binary Search 7 Angka yang dicari : BB = 1 = 5 BA Angka yang ke 3 = 7 ? Tidak NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3 Jika Angka yang dicari > Angka ke 3 maka BB = NT + 1 Sebaliknya BA = NT - 1
Searching Binary Search 7 Angka yang dicari : BB = 1 = 5 BA Angka yang ke 3 = 7 ? Tidak NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3 Jika Angka yang dicari > Angka ke 3 maka BB = NT + 1 Sebaliknya BA = NT - 1
Searching Binary Search 7 Angka yang dicari : BB = 4 = 5 BA NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Searching Binary Search 7 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Searching Binary Search 7 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? Tidak NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5 Jika Angka yang dicari > Angka ke 5 maka BB = NT + 1 Sebaliknya BA = NT - 1
Searching Binary Search 7 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? Tidak NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5 Jika Angka yang dicari > Angka ke 5 maka BB = NT + 1 Sebaliknya BA = NT - 1
Searching Binary Search 7 Angka yang dicari : BB = 4 = 4 BA NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4
Searching Binary Search 7 Angka yang dicari : BB = 4 = 4 BA Angka yang ke 4 = 7 ? Tidak NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4 Jika Angka yang dicari > Angka ke 4 maka BB = NT + 1 Sebaliknya BA = NT - 1
Searching Binary Search 7 Angka yang dicari : BB = NT + 1 = 5 BA = 4 BA Angka yang ke 4 = 7 ? Tidak NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4 Jika Angka yang dicari > Angka ke 4 maka BB = NT + 1 Sebaliknya BA = NT - 1 Karena BA < BB maka pencarian selesai Dengan hasil tidak ditemukan
Selengkapnya While (BB <= BA) and NOT Ketemu do NT = (BB + BA) / 2 if ygDicari = Angka[NT] then Ketemu = True else if ygDicari > Angka[NT] then BB = NT + 1 else BA = NT – 1 wend
Kesimpulan • Lebih cepat ½ kali lipat • Tapi data harus diurutkan terlebih dahulu
Latihan • Datanya 129, 184, 80, 106, 822, 885 • Diurutkan : 80, 106, 129, 184, 822, 885 • Yang dicari 100