Pencarian ( Searching) Metode Pencarian • Linear Search ▫ Tanpa Boolean Dengan Sentinel Tanpa Sentinel ▫ Dengan Boolean • Binary Search Linear Search (Pencarian Berurutan) • Metoda yang paling sederhana dari sejumlah metoda pencarian adalah metoda pencarian berurutan yang sering dikenal dengan sequential searching atau linear search. • Secara garis besar metoda ini bisa dijelaskan sbb: ▫ Dari vektor yang diketahui, data yang dicari dibandingkan satu per satu sampai data tersebut ditemukan atau tidak ditemukan. Pada saat data yang dicari sudah ketemu, maka proses pencarian langsung dihentikan. Tetapi jika data yang dicari belum ketemu, maka pencarian diteruskan sampai seluruh data dibandingkan. Dalam kasus yang paling buruk, untuk venktor dengan N elemen harus dilakukan pencarian sebanyak N kali pula. Algoritma Linear Search For I = 1 to maks_array do Begin If Data_cari = nama_array[i] Then Ketemu := True Else Ketemu := False; End; Linear Search Tanpa boolean tanpa sentinel: 1. Tidak menggunakan variabel boolean. 2. Tidak mempunyai tambahan elemen di akhir array. Tanpa boolean dengan sentinel: 1. Tidak menggunakan variabel boolean. 2. Mempunyai tambahan elemen di akhir array untuk menyimpan data cari apabila data cari tidak ditemukan. Linear Search Dengan boolean: 1. Menggunakan variabel boolean. 2. Menghasilkan nilai TRUE atau FALSE di akhir pencarian. Algortima : Input (datacari) Ketemu := false I := 1 While (not ketemu and I = maks_array) do Begin if (datacari = bilangan[i]) then ketemu := true else I := I +1; End; Binary Search 1. Data harus terurut baik secara ascending atau descending. 2. Mekanismenya adalah dengan cara membagi dua bagian yaitu bagian kiri (indeks terkecil/Ia) sampai ke indeks tengah dan bagian kanan mulai dari indeks tengah sampai indeks terbesar (Ib) 3. Indeks tengah (k) : (Ia+Ib) div 2. 4. Jika data yang dicari lebih kecil dari data di indeks tengah maka pencarian dilanjutkan ke bagian kiri. 5. Jika data yang dicari lebih besar dari data di indeks tengah maka pencarian dilanjutkan ke bagian kanan. Contoh : • Di bawah ini adalah kunci–kunci carilah kunci 39 dengan mengunakan algorithm Binary Search. [13, 16, 18, 27, 28, 29, 38, 39, 53]. 1 2 3 4 5 6 7 8 9 File ini dinamakan File Sequential (secara berurutan). Cara penyelesaian. • Bila di cari kunci 39 maka ; • terendah = 1, dan tertinggi = 9, • maka 1 + 9 = 10 , lalu 10 / 2 = 5. • Nomor urut 5, adalah kunci 28 , tapi 28 < 39, • [13, 16, 18, 27, 28, 29, 38, 39, 53]. • maka terendah = 5 , dan tertinggi = 9, • maka : 5 + 9 = 14 • 14 / 2 = 7. • Nomor urut 7 adalah 38 , tapi 38 < 39, • [13, 16, 18, 27, 28, 29, 38, 39, 53]. • maka terendah = 8, dan tertinggi = 9, (karena mid + 1 jadi 7+1=8) • maka : 8 + 9 = 17 • 17 / 2 = 8,5 => 8,5 ≈ 8 • Note: kl mengambil kebawah, haruskonsisten untuk jawaban selanjutnya jika ada kasus yg sama juga harus kebawah • Nomor urut 8 adalah kunci 39 , dimana kunci 39 = 39. Ketemu pada nomor urut ke 8. • [13, 16, 18, 27, 28, 29, 38, 39, 53] Latihan • Buatkan Program untuk mengimplementasikan pencarian dengan Linear dan Binary!