Monday, December 23, 2013

Search-Binary-Sequential

Sequential Search (Pencarian Berurutan)

Adalah suatu teknik pencarian data dalam array (1 dimensi)yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.


Berikut adalah contoh script penggunaan Sequential Searching.

public class Squental_search {
    public static void main(String[] args) {//main method
        int A[] = {12, 65, 23, 79, 44, 90};
        //suatu isi array
        int cari = 65;
        //suatu nilai yang akn dicari dalam sebuah pencarian
        int N = 6;
        //batas suatu array
        
     //menampilkan data array
        System.out.println("Data suatu array");
        for (int i = 0; i < A.length; i++) {
            //nilai data yang dicari
        
            System.out.print(A[i] + " ");
        }
        System.out.println("");
        for (int i = 0; i < A.length; i++) {
            if (cari == A[i]){//mencari data yang akan dicari
                System.out.println("data yang ditemukan pada index nomer:"+i);
        break;
        //berhenti perulangan
            }
    }
    }

}
Outputnya :

Pencarian Biner (Binary Search) 
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam 
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner 
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering 
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus 
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil 
posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus 
(posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data 
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama 
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal 
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah 
sama dengan yang dicari. 
Berikut contohnya :
public class Binary {
    public static void main(String[] args) {
        int N = 6;//jumlah index array yang telah ditentukan
        int A[] = {9,5,11,68,34,45};// nilai index array
        int cari,batasatas, batasbawah;
        //tipe data dari variabel tersebut
       
        boolean ketemu;//tipe data
          cari= 11;//angka yg ingin dicari
        batasatas = 0;//batas atas 
        batasbawah = N - 1;//algoritma Batas bawah
        ketemu = false;//kondisi
        int tengah =0;//nilai batas tengah
        
        System.out.println("Data yang diisi");
        for (int i = 0; i < A.length; i++) {
           
            System.out.print(A[i] + " ");
        }
        System.out.println("");
            
            while ((batasatas<=batasbawah)&&(!ketemu)){
                //saat batas <= tidak ketemu
                tengah = (batasatas+batasbawah) / 2;
                //menjelaskan batastas dan batasbawah/2
                if(A[tengah]== cari){
                    ketemu = true;
                    
                }else{
                    if(A[tengah]<cari){
                        //suatu index array yang dicari
                        batasatas=tengah++;
                    }else{
                        batasatas=tengah--;
                        //batas bawah --
                    }
                }
            }
            if(ketemu){
                //apabila sudah ketemu
                System.out.println("data"+cari+"ditemukan pada index ke" + (tengah+"baris"+(tengah+1)));
                //mencetak data diindex tengah
            }else{
                System.out.println("data"+cari+"tidak ditemukan");
                //mencetak suatu data yang ditemukan
            }
            System.out.println("\n");
    
                        
                    }
            }
Outputnya:

Awalia Wahyu Juwita
1200631030

            




No comments:

Post a Comment