Sabtu, 21 Desember 2013

SQUENTIAL BINARY SEARCH


IMPLEMENTASI SEARCH
Searching adalah 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
1. Single Match
Pencarian yang menghasilkan satu data
Contoh : mencari mahasiswa dengan nim “120651234”

2. Multiple Match
Pencarian yang memungkinkan menghasilkan beberapa data
Contoh : mencari mahasiswa dengan ipk >= 3.5

ALGORITMA SEARCHING
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 dan dilakukan pada data yang tidak terurut.
Contoh Implementasi Squential Search sebagai berikut :

package TUGAS5_IISDAHLIA;
 
import java.util.Scanner;
import javax.swing.JOptionPane;
/**
 *
 * @author IisDahlia
 */
public class SequentialBinary {
    public static void main(String[] args) {
      
int nilai []= {2, 5, 8, 12, 15, 25, 37, 57};//tipe data array
  String kunci=JOptionPane.showInputDialog("Data yang dicari : ");
  int key=Integer.parseInt(kunci);//menyesuaikan tipe data array dengan
                                  //mengganti tipe data string ke int
  boolean ketemu = false;//tipe data boolean yang menyatakan ada & tidaknya data
  int i= 0;//integer perulangan
  int indeks = -1;//menyatakan indeks yang bernilai -1 terdapat didalam variable
    while(!ketemu && i<nilai.length ){//akan terjadi perulangan variable yang
                                //tidak ditemukan jika kurang dari panjang array
         indeks = i;//indeks menjadi varible perulangan
      if(key == nilai[i]){//indeks yang bernilai sama dengan data kunci dan
                 //berada saat perulangan maka data yang ditemukan bernilai true
         ketemu=true;
         }
          i++;//increment i=i+1
       }
  String Pesan = ketemu?"data ditemukan pada indeks ke :"
          + indeks :"data yang anda cari tidak ditemukan ";
  JOptionPane.showInputDialog(Pesan);//print out dari hasil pencarian
    }
}

Untuk lebih jelasnya dan supaya lebih mudah dipahami bisa melihat gambar dibawah ini:




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.

Contoh Implementasi BinarySearch sebagai berikut :

package TUGAS5_IISDAHLIA;

import java.util.Scanner;
import javax.swing.JOptionPane;
/**
 *
 * @author IisDahlia
 */
public class BinarySearch_IisDahlia {
   
    public static void main(String[] args) {
        int A[] = {3, 7, 9, 10, 21, 24, 33, 63};
        Scanner input = new Scanner(System.in);//memasukkan inputan berupa kunci
        System.out.println("Data yang dicari : ");
        int keyint =input.nextInt();//menyesuaikan tipe data array dengan
                                    //mengganti tipe data string ke int
        boolean ketemu = false;//data boolean yang menyatakan ada & tidaknya data
        int indeksAtas = 0;//integer perulangan pada indeks kiri
        int indeksBawah = A.length - 1;//integer perulangan pada indeks kanan
        int indekstengah = -1;//integer perulangan pada indeks tengah

        while ( !ketemu&& indeksAtas <= indeksBawah    ) {
        //akan terjadi perulangan variable yang tidak ditemukan
        //jika indeks sebelah kiri kurang dari sama dengan indeks kanan
            indekstengah = (indeksAtas + indeksBawah) / 2;
            //memisahkan array menjadi bagian kanan dan kiri dengan indeks tengah
            if (A[indekstengah] == keyint) {
            //nilai indeks tengah sama dengan kunci yang dicari dengan status
            //true atau false   
                ketemu = true;
            }else if (keyint < A[indekstengah] ){
            //menjelaskan nilai kunci lebih besar dari indeks
                indeksBawah=indekstengah -1;
        }else{//mencari bagian kiri
                indeksAtas=indekstengah +1;
            }          
    }if(ketemu){///perulangan jika nilai yang dicari ditemukan
            System.out.println("data ditemukkan pada index :"+indekstengah);      
    }else{//nilai yang dicari tidak ditemukkan
        System.out.println("data tidak ditemukan :");
        }
    }
}

Untuk lebih jelasnya dan supaya lebih mudah dipahami bisa melihat gambar dibawah ini:




IIS DAHLIA
1200631047
MI  A

Tidak ada komentar:

Posting Komentar