Searching Struktur Data
Linier Search Searching Mencari dari data pertama sampai data terakhir Pencarian selesai jika ketemu atau sudah habis
Liniear Search Searching 7 9 3 2 6 5 1 2 3 4 5 Angka yang dicari : Angka yang ke 1 = 7 ? Tidak If Angka[1] = ygDicari then
Liniear Search Searching 7 9 3 2 6 5 1 2 3 4 5 Angka yang dicari : Angka yang ke 2 = 7 ? Tidak If Angka[2] = ygDicari then
Liniear Search Searching 7 9 3 2 6 5 1 2 3 4 5 Angka yang dicari : Angka yang ke 3 = 7 ? Tidak If Angka[3] = ygDicari then
Liniear Search Searching 7 9 3 2 6 5 1 2 3 4 5 Angka yang dicari : Angka yang ke 4 = 7 ? Tidak If Angka[4] = ygDicari then
Liniear Search Searching 7 9 3 2 6 5 1 2 3 4 5 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
Disederhanakan Berapa lama pencarian dilakukan For i := 1 to 5 do begin If Angka[i] = ygDicari then Ketemu = True end Berapa lama pencarian dilakukan Manusia ingin yang tercepat
Binary Search Searching 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
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 1 = 5 BA NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 1 = 5 BA Angka yang ke 3 = 7 ? Tidak Jika Angka yang dicari > Angka ke 3 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 1 = 5 BA Angka yang ke 3 = 7 ? Tidak Jika Angka yang dicari > Angka ke 3 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 1 + 5 ) / 2 = 3
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 = 5 BA NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? Tidak Jika Angka yang dicari > Angka ke 5 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 = 5 BA Angka yang ke 5 = 7 ? Tidak Jika Angka yang dicari > Angka ke 5 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 4 + 5 ) / 2 = 4.5 = 5
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 BA NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = 4 BA Angka yang ke 4 = 7 ? Tidak Jika Angka yang dicari > Angka ke 4 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4
Binary Search Searching 7 2 3 5 6 9 1 2 3 4 5 Angka yang dicari : BB = NT + 1 = 5 BA = 4 BA Angka yang ke 4 = 7 ? Tidak Karena BA < BB maka pencarian selesai Dengan hasil tidak ditemukan Jika Angka yang dicari > Angka ke 4 maka BB = NT + 1 Sebaliknya BA = NT - 1 NT = (BB + BA) / 2 = ( 4 + 4 ) / 2 = 4
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 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