Pencarian Data Dengan Metode Biner (Binary Search)

Algoritma  pencarian biner merupakan perbaikan dari konsep sebelumnya(pencarian linier) alasannya lebih efisien. Dengan algoritma ini, kita tidak perlu menyidik semua elemen sehingga menghemat waktu pencarian. Algoritma ini dibangun menurut wangsit sebagai berikut:

  • Urututan terlebih dahulu elemen-elemen array menurut nilainya. Urutan boleh naik (bilangan terkecil dahulu, lalu terakhir bilangan terbesar) atau turun.
  •  Selanjutnya, ambillah nilai elemen yang terletak pada posisi tengah urutan array tersebut. Kita sebut nilai elemen ini sebagai nilai tengah. Nilai tengah ini membagi array menjadi dua segmen;segmen pertama berisi elemen terkecil hingga nilai tengah, sedangkan segmen kedua berisi elemen nilai tengah hingga nilai terbesar.
  • Bandingkanlah nilai elemen yang dicari (kunci) dengan nilai tengah ini. Proses pembandingan ini mempunyai tiga kemungkinan:
1.    Bila nilai kunci sama dengan nilai tengah, maka pencarian selesai.
2.    Bila nilai kunci lebih kecil dari nilai tengah, maka algoritma akan mengabaikan setengah bab dari array (mulai dari nilai tengah hingga nilai elemen terbesar). Selanjutnya, proses pencarian difokuskan untuk segmen yang lain, yaiut elemen terkecil hingga kepada nilai tengah. Kemudian, algoritma akan membagi bagi segmen tersebut menjadi dua, dilanjutkan proses pembandingan, dan seterusnya.
3.    Bila nilai kunci lebih besar dari nilai tengah, maka algoritma akan mengabaikan segmen yang berisi nilai terkecil hingga nilai tengah. Selanjutnya kaidah pencarian mengikuti contoh pembagian segmen menjadi dua dan membandingkannya dengan nilai tengah, sama menyerupai sebelumnya. Demikian seterusnya hingga elemen yang dicari ditemukan atau elemen array sudah selesai diperiksa. 

Berikut source codenya:

public class binarySearch {

    public static void main(String[] args) {

    int array[] = new int[5];

    array[0] = 25;
    array[1] = 30;
    array[2] = 35;
    array[3] = 40;
    array[4] = 45;

    int batasAtas = array.length-1;
    int batasBawah = 0;

    for(int index = 0 ; index<array.length; index++){
        System.out.print(array[index] +" ");
    }

    System.out.println("");

    int cari = 30;
    boolean belumKetemu = true;

    while(belumKetemu) {
        int posisiSekarang = (batasAtas + batasBawah)/2;
    if (array[posisiSekarang] == cari) {
        belumKetemu=false;
        System.out.println("ditemukan" + cari);
    } else if(batasBawah > batasAtas) {
        System.out.println("tidak ditemukan" + cari);
        break;
    }else {
        if (array[posisiSekarang] < cari) {
        batasBawah = posisiSekarang + 1;
        }else {
        batasAtas = posisiSekarang - 1;
        }
    }
    }
    }
}



output :

25 30 35 40 45
ditemukan30

Comments

Popular posts from this blog

Pewarnaan Objek Geometri Di Java 2D

Tugas Komplemen Terakhir

Konsep Oop Encapsulation