Logikanya adalah sebagai berikut:
- data diambil dari posisi 1 sampai posisi N
- lalu cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
- kemudian data yang dicari dibandingkan dengan data tengah, apakah data itu lebih besar atau lebih kecil.
- Jika lebih besar, maka (posisi awal = posisi tengah + 1)
- Jika lebih kecil, maka (posisi akhir = posisi tengah – 1)
- Jika data yang dicari = data tengah, maka “KETEMU”.
Di bawah ini adalah kummpulan angka dalam suatu array carilah angka 25 dengan mengunakan Binary Search.
[3, 6, 8, 17, 18, 20, 23, 25, 30].
1 2 3 4 5 6 7 8 9
File ini dinamakan File Sequential (secara berurutan).
Cara penyelesaian.
Bila angka yang dicari adalah 25 maka ;
Bila terendah = 1, dan tertinggi = 9,
maka 1 + 9 = 10 , lalu 10 / 2 = 5.
1. Nomor urut 5, adalah adalah angka 18 , tapi 18 < 25,
[3, 6, 8, 17, 18, 20, 23, 25, 30].
maka terendah = 5 , dan tertinggi = 9,
maka : 5 + 9 = 14
14 / 2 = 7.
2. Nomor urut 7 adalah 23 , tapi 23 bukan angka yang di cari dan jika bagi dua tersisa maka angka tengahnya adalah 8.5 atau sama dengan 8
3. Nomor urut 8 adalah angka 25 , dimana angka 25 = 25 yang dicari.
Maka jawaban yang dicari pun ketemu.
Oke, jika sudah selanjutnya kita akan membuat contoh program dari binary search dengan menggunakan bahasa pemrograman java. buat sebuah program java dan copas code berikut
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package binarysearch; import java.util.Scanner; /** * * @author toufik.web.id */ public class BinarySearch { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here int c, pertama, terakhir, tengah, n, cari, array[]; Scanner sc = new Scanner(System.in); System.out.print("Masukkan Jumlah Data: "); n = sc.nextInt(); array = new int[n]; System.out.println("Masukkan " + n + " Angka"); for (c = 0; c < n; c++) array[c] = sc.nextInt(); System.out.print("Masukkan Angka Yang Ingin Di Cari: "); cari = sc.nextInt(); pertama = 0; terakhir = n; tengah = (pertama + terakhir)/2; while( pertama <= terakhir ) { if ( array[tengah] < cari ) pertama = tengah + 1; else if ( array[tengah] == cari ) { System.out.println(cari + " Ditemukan di: " + (tengah + 1) + "."); break; } else terakhir = tengah - 1; tengah = (pertama + terakhir)/2; } if ( pertama > terakhir ) System.out.println(cari + " Tidak ada dalam daftar.\n"); } }Setelah itu save dan coba di run... jika sukses maka programnya akan dapat berjalan seperti video dibawah ini.
Oke jika anda malas ngetik kode nya bisa langsung download aja project jadinya...
0 komentar:
Posting Komentar
Ada pertanyaan atau sekedar ninggalin jejak silahkan comment di bawah
==komen anda berarti buat kami==