Monday, December 23, 2013

Sequential Search dan Binary Search

Akhirnya posting juga setelah beberapa minggu nggak posting, dan lagi lagi postingan kali ini membahas tentang perkuliahan.
Baik, materi yang kemarin saya dapat adalah mengenai Searching











Berikut sedikit penjelasan dari slide perkuliahan kemarin, hehe.. 
Searching pada struktur data adalah :
  • Proses mendapatkan (retrieve) informasi berdasarkan kunci (key) tertentu dari sejumlah informasi yang telah disimpan.
  • proses pencarian data yang ada pada suatu deret data dengan cara menelusuri data-data tersebut.
  • Kunci (key) digunakan untuk melakukan pencarian record yang diinginkan didalam suatu list.
  • Tahapan paling penting pada searching: memeriksa jika data yang dicari sama dengan data yang ada pada deret data.
Jenis searching :

  • Single match : Pencarian yang menghasilkan satu data. Contoh : mencari mahasiswa dengan nim “120651234”
  • Multiple match : Pencarian yang memungkinkan menghasilkan beberapa data. Contoh : mencari mahasiswa dengan ipk >= 3.5
Algoritma Search
  1. Sequential Search
  • Merupakan teknik yang sederhana dan langsung dapat digunakan pada struktur data array.
  • Pencarian data secara urut mulai dari data pertama sampai kunci yang dicari ditemukan atau sampai seluruh data telah dicari dan tidak ditemukan
  •  Dilakukan pada data yang tidak terurut
Berikut Source code keseluruhan Sequential Search pada bahasa pemrograman java :
import javax.swing.JOptionPane;//import yang berfungsi untuk memanggil JOptionPane

public class SeqSearch {//kelas SeqSearch

    //deklarasi variable
    int x;
    //deklarasi array
    int[] s = new int[5];
    //deklarasi boolean
    boolean found = false;

    public void sequential() {
        System.out.print("Deret angka : ");
        //perulangan untuk kondisi i = 0 dan i < panjang array s,
        for (int i = 0; i < s.length; i++) {
            //menampilkan input dialog untuk mengisi deret angka berapa saja yang ingin ditampilkan
            //mengkonversi kunci yang bertipe string ke integer agar sama dengan nilai array
            s[i] = Integer.parseInt(JOptionPane.showInputDialog("Masukkan " + s.length + " angka," + " angka ke-" + (i + 1)));
            System.out.print(s[i] + "  ");
        }
        System.out.println();
        //menginputkan angka yang ingin dicari dan mengkonversi kunci yang bertipe string ke integer
        x = Integer.parseInt(JOptionPane.showInputDialog("Angka yang dicari"));
        System.out.println("Angka yang dicari : " + x);
        System.out.println("------------------------------------");
        //perulangan untuk kondisi i = 0 dan i < panjang array s
        for (int i = 0; i < s.length; i++) {
            //jika x atau variable yang dicari = index array yang sudah diinputkan maka nilai boolean 'found' adalah true
            //kemudian di break untuk menghentikan
            if (x == s[i]) {
                found = true;
                break;
            }
        }
        //kondisi jika nilai boolean 'found' true, maka mencetak statement ditemukan
        if (found == true) {
            System.out.println("Angka " + x + " ditemukan");
            //selain itu maka statement tidak ditemukan
        } else {
            System.out.println("Angka " + x + " tidak ditemukan");
        }
    }

    public static void main(String[] args) {
        //untuk menampilkan pada interface hasil dari method sequential
        SeqSearch search = new SeqSearch();
        search.sequential();
    }
}

2. Binary search

  • Pencarian data dimulai dari pertengahan data yang telah terurut.
  • Jika kunci pencarian lebih kecil daripada kunci posisi tengah, maka kurangi lingkup pencarian pada separuh data pertama.
  • Begitu juga sebaliknya jika kunci pencarian lebih besar daripada kunci tengah, maka pencarian ke separuh data kedua.
  • Teknik Binary Search hanya dapat digunakan pada sorted array.
berikut souurce code keseluruhan dari binary search
import javax.swing.JOptionPane;//import yang berfungsi untuk memanggil JOptionPane

public class BinSearch {
    
    int n = 5, cari, atas, bawah, tengah;//deklarasi variable n,cari,atas,bawah,tengah
    int a[] = new int[n];//deklarasi array
    boolean found;//deklarasi nilai boolean 

    public void binary() {
        System.out.print("Deret angkanya : ");
        for (int i = 0; i < a.length; i++) {//perulangan untuk kondisi i = 0 dan i < panjang array a,
            //mengkonversi tipe data string ke integer
            //menampilkan input dialog untuk memasukkan angka yang berurutan yang nanti di cari
            a[i] = Integer.parseInt(JOptionPane.showInputDialog("Masukkan " + n + " angka 'BERURUTAN' ke-" + (i + 1)));
            System.out.print(a[i] + "  ");
        }
        System.out.println();
        //menampilkan input dialog untuk memasukkan angka yang yang akan dicari
        //harus di konversi dulu dari string ke dalam tipe data integer
        cari = Integer.parseInt(JOptionPane.showInputDialog("Angka yang dicari"));
        System.out.println("Angka Yang Dicari: " + cari);
        System.out.println("--------------------------------------");
        //menginisialisasikan batas atas yaitu 0,batas bawah n-1,dan found yang bernilai false
        atas = 0;
        bawah = n - 1;
        found = false;
        //perulangnan untuk mendeklarasikan algoritma,
        while ((atas <= bawah) && (found==false)){
            tengah = (atas + bawah) / 2;
            if (a[tengah] < cari) {
                atas = tengah + 1;
                //jika index array tengah sama dengan angka yang dicari
            } else if (a[tengah] == cari) {
                //maka menampilkan bahwa angka ditemukan
                System.out.println("Angka " + cari + " ditemukan di index " + tengah);
                break;
            } else {
                bawah = tengah - 1;
            }
            tengah = (atas + bawah) / 2;
        }
        if (atas > bawah) {//jika nilai atas lebih dari nilai yang bawah
            System.out.println("Angka " + cari + " tidak ditemukan");
        }
    }

    public static void main(String[] args) {
        //untuk menampilkan pada interface hasil dari method sequential
        BinSearch search = new BinSearch();
        search.binary();
    }
}
Selesai sudah postingan kali ini tentang konsep sequential dan binary search pada bahasa pemrograman java. Semoga bermanfaat, dan semoga mendapatkan nilai yang bagus dengan tugas minggu ini, hehe.. Pesan dari saya“ Impossible Is Nothing ”
NIM : 1000631038
NAMA : PRIYO SIGIT PURNOMO
JURUSAN : MANAJEMEN INFORMATIKA
UNIVERSITAS MUHAMMADIYAH JEMBER