Konsep Binary Search dan Contoh Programnya dalam Java

Dalam ilmu komputer, binary search juga dikenal sebagai sebuah algoritma pencarian dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pencarian untuk menemukan nilai tertentu dalam sebuah larik (array) linear. Binary search bekerja dengan membandingkan nilai target dengan elemen tengah array; jika mereka tidak sama, yang lebih kecil atau lebih besar dari nilai target yang dicari makan akan dihilangkan tergantung pada hasil dan pencarian, dan akan diulang dalam subarray yang tersisa sampai berhasil.
Logikanya adalah sebagai berikut:
  1. data diambil dari posisi 1 sampai posisi N
  2. lalu cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
  3. kemudian data yang dicari dibandingkan dengan data tengah, apakah data itu lebih besar atau lebih kecil.
  4. Jika lebih besar, maka (posisi awal = posisi tengah + 1)
  5. Jika lebih kecil, maka (posisi akhir = posisi tengah – 1)
  6. Jika data yang dicari = data tengah, maka “KETEMU”.
CONTOH DAN CARA KERJA BINARY SEARCH
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==