Binary Search

 Dalam Pencarian Binary Search, Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian. Adalah teknik pencarian data dalam dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pencarian. Prinsip pencarian biner adalah:

Data diambil dari posisi 1 sampai posisi akhir N Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar? Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1 Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1 Jika data sama, berarti ketemu

ini source codenya cuy.. ..


 import jeliot.io.*;

public class binarySearch {
    public static void main() {
        System.out.println ("Banyaknya data !!!");
// MENGINPUTKAN BANYAKNYA DATA YANG AKAN DI MASUKKAN....
        int n = Input.readInt();
// MENYIMPAN DATA-DATA YANG DIMASUKKAN KEDALAM ARRAY....
        int array[] = new int[n];
        for (int a = 0; a < n; a++) {
            array[a] = Input.readInt();
        }
// PROSES PENGURUTAN DATA....
        for(int b = 0; b < n-1; b++) {
            for(int c = 0; c < n-1; c++) {
                if(array[c] > array[c+1]) {
                    int temp = array[c];
                    array[c] = array[c+1];
                    array[c+1] = temp;
                }
            }
        }
// MENAMPILKAN DATA YANG TELAH DI URUTKAN...    
        for(int b=0; b < n; b++){
            System.out.print(array[b] + " ");
        }
        System.out.println();
// MENGKONDISIKAN AKHIR = N-1 DAN AWAL = 0        
        int akhir = n-1;
        int awal = 0;
// MENGINPUTKAN DATA YANG AKAN DI CARI...
        int search = Input.readInt();
        boolean notFound = true;
// MENCARI DATA...
        while(notFound) {
            int posisi = (akhir + awal)/2;
            if (array[posisi] == search) {
                notFound = false;
                System.out.println("Ditemukan : " + search + " Pada Data Ke-" + posisi);
            } else if(awal > akhir) {
                System.out.println("Tidak Ditemukan " + search);
                break;
            }
            else {
                if (array[posisi] < search) {
                    awal = posisi + 1;
                } 
                else {
                akhir = posisi - 1;
                }
            }
        }
    }
}
 


Silahkan di coba cuy. ..!!!! :D

0 komentar:

Posting Komentar