Untuk Pencarian data yang jumlahnya banyak, waktu pencarian relatif cepat. selain itu beban komputasi juga lebih kecil karena pencarian dilakukan dari depan, belakang, dan tengah. Namun ada pula kekurangannya, yaitu data harus disorting dahulu dan Algoritma lebih rumit, tidak baik untuk data berangkai.
Algoritma dari Binary Sort
Proses yang terjadi pada pencarian dengan metode ini adalah sebagai berikut :
- Membaca Array data
- Apabila Array belum terurut maka array diurutkan terlebih dahulu.
- Menentukan data yang akan dicari
- Menentukan elemen tengah dari array
- Jika nilai elemen tengah sama dengan data yang dicari, maka pencarian berhenti.
- Jika elemen tengah tidak sama dengan data yang dicari maka :
- Jika nilai elemen tengah > data yang dicari maka pencarian dilakukan pada setengah array pertama.
- Jika nilai elemen tengah lebih kecil dari pada data yang dicari maka pencarian dilakukan pada setengah array berikutnya.
ILUSTRASI BINARY SEARCH
ARRAY Ke- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
DATA | 3 | 1 | 4 | 7 | 25 | 12 | 40 | 78 | 90 | 65 |
DIURUTKAN | 1 | 3 | 4 | 7 | 12 | 25 | 40 | 65 | 78 | 90 |
Setelah data tersebut diurutkan maka fungsi binary sort baru mulai bekerja mencari data. berikut cara dari Binary sort mencari data tersebut. misalnya data yang dicari adalah 65. maka pencariannya dijelaskan pada tabel berikut ini :
NILAI TENGAH | DATA | |||||||||
12 | 1 | 3 | 4 | 7 | 12 | 25 | 40 | 65 | 78 | 90 |
40 | 1 | 3 | 4 | 7 | 12 | 25 | 40 | 65 | 78 | 90 |
40 | 1 | 3 | 4 | 7 | 12 | 25 | 40 | 65 | 78 | 90 |
KETEMU | 1 | 3 | 4 | 7 | 12 | 25 | 40 | 65 | 78 | 90 |
KETERANGAN :
Pada data range diberi warna Hijau. Pencarian dimulai dari tengah,Kiri dan kanan. rumus untuk Posisi tengahnya adalah ( Posisi Akhir + Posisi Awal )/2. jadi Nilai tengah pada langkah pertama yaitu adalah 12 (berwarna merah) dan nilai targetnya adalah 65 (kuning). Karena nilai data yang dicari > dari data yang ditengah, maka pencarian menjadi dikanan dari nilai tengah. Setelah itu, Maka nilai 12 menjadi awal pencarian, selanjutnya dicari kembali nilai tengah pada range nilai 12 ke kanan sampai pada array dengan nilai 90. ternyata nilai tengahnya adalah 40. kemudian array dari nilai 40 dibandingkan dengan target, ternyata lebih besar, maka pencarian kembali mengarah ke kanan nilai tengah. Array dengan nilai 40 menjadi titik awal pencarian sekarang. dan sekarang nilai tengah nya adalah 65. maka dibandingkan dengan target ternyata sama, maka data sudah ditemukan.
Sumber: http://dharmaatmaja.wordpress.com/tag/binary-search/
Tidak ada komentar:
Posting Komentar