Monday, July 12, 2010

Program Searching Pada Bilangan Acak

Sebelumnya saya coba memebuat program searching menggunakan algoritma binary search dengan data yang sudah terurut. Kali ini saya mencoba menggabungkan algoritma pengurutan Buble Sort dan algoritma Binary search untuk mencari bilangan acak atau belum terurut.

contoh programnya adalah sebagai berikut :

import java.util.Scanner;
import javax.swing.JOptionPane;

public class BinarySearch{
    public static void main (String[] args) {
    Scanner x = new Scanner(System.in);
    System.out.print("Masukan jumlah data : ");
    int jmlData = x.nextInt();
    int[] bil = new int [jmlData];
  
    //memasukkan data
    for (int i=0; i
        System.out.print("Data ke- "+(i+1)+" : ");
        bil[i]=x.nextInt();
    }
  
    //menampilkan data yang diimputkan
    System.out.print ("Data yang dimasukkan adalah :");
    for (int j=0; j
        System.out.print (bil[j]+" ");
    }
  
    //Proses pengurutan
    System.out.println ("");
    System.out.println ("");
    for (int a=0; a
        {
        System.out.println ("Iterasai ke- "+(a+1)+" : ");
        for (int b=bil.length-1; b>0; b--)
            {
            if (bil[b]
                int temp = bil[b];
                    bil[b]=bil[b-1];
                    bil[b-1]=temp;
            }
        }
        for (int c=0; c
            System.out.print (bil[c]+" ");  
        }
        System.out.println (" ");
        System.out.println (" ");
    }
  
    //menampilkan data setelah diurutkan
    System.out.println ("");
    System.out.print ("Data Setelah Diurutkan adalah :");
    for (int a=0; a
        System.out.print (bil[a]+" ");
    }
  
    //proses pencarian  
    System.out.println (" ");
    System.out.println (" ");
    System.out.print ("Angka yang akan dicari : ");
    int angka = x.nextInt();
  
    int kanan = bil.length-1;
    int kiri = 0;
    int tengah = -1;
    boolean ketemu = false;
  
    while (!ketemu && kiri <= kanan){
    tengah = (kiri+kanan)/2;
    if (bil[tengah]==angka){
        ketemu=!ketemu;
    }  
        else{
            if (angka < bil[tengah]){
                kanan = tengah-1;
            }
            else{
                kiri=tengah+1;
            }
        }
    }
  
    if (bil[tengah]==angka){
  
    System.out.println (" ");
    System.out.println ("Data ditemukan pada index ke- "+(tengah+1));  
    }
    else
    System.out.println("data tidak ada");
}
}

Untuk outputnya adalah sebagai berikut :














Untuk programnya bisa di download di sini : SOURCE CODE

0 comments:

Post a Comment