Senin, 23 Desember 2013

Searching (Pencarian) pada Java , Sequential Search dan Binary Search




Sequential Search adalah teknik pencarian data dimana data dicari secara urut dari depan ke belakang atau dari awal sampai akhir. berdasarkan key yang di cari.
 
Cara kerja sequential search :

·         Data Array = { 21, 4, 94, 14, 1, 9, 2}
·         Elemen  kunci  yang di cari = 14
·         Maka elemen Data Array : 10, 8, 11, 20, 27, 99, 21, 5, 41, 17
·         Elemen yang di cari : 99
·         Maka elemen yang di periksa adalah : 21, 4, 94, 14 (Data 14 di temukan)
·         Index larik yang di kembalikan : idx : 3
·         Setelah elemen kunci yang di cari ketemu maka pencarian akan berhenti di sini tanpa memeriksa elemen setelah elemen 14.

Berikut contoh coding java Sequential Search :

package tugas_Searching;

import java.util.Scanner;

public class sequential {
    public static void main(String[] args) {
       
        int [] Data = {21, 4, 94, 14, 1, 9, 2};
        int key = 14;
        int i = 0;
        boolean temukan = false;
       
        for (i = 0; i < Data.length; i++) {
           if (key == Data[i] ){
               temukan = true;
               break;
      }
    }
        if (temukan){
            System.out.println("Data : " + key );
            System.out.println("Ada");
        }
        else {
            System.out.println("Tidak Ada");
        }
}
}



Binary search adalah teknik pencarian data dimulai dari pertengahan data yang telah terurut atau dengan cara membagi dua data setiap kali proses pengurutan.

 
Algoritma Binary Search :
Input (cari) {meminta nilai data yang akan dicari}
BatasAtas    0 {indeks array dimulai dari 0}
BatasBawah    N – 1
Ketemu    False
While (BatasAtas < BatasBawah) and (not ketemu) do
Tengah    (BatasAtas + BatasBawah) div 2
If A [Tengah] = cari then
             Ketemu    true
        Else
If (A [Tengah] < cari) then {cari di bagian kanan}
      BatasAtas    Tengah + 1
Else
     BatasAtas    Tengah -1 {cari di bagian kiri}
Endif
         Endif
EndWhile
If (ketemu) then
Output (‘Data berada di index nomor’, Tengah)
Else     Output (‘Data tidak dtemukan’)
Endif


Berikut contoh coding java Binary Search :

package tugas_Searching;

public class binary {

    public static void main(String[] args) {
        int N = 8;
        int A [] = {2, 5, 3, 8, 1, 6, 7, 9};
        int BatasAtas, BatasBawah, Tengah;
        int cari = 5;
        BatasAtas = 0;
        BatasBawah = N - 1;
        Tengah = 0;
        boolean ketemu;
        ketemu = false;
       
        while((BatasAtas <= BatasBawah) && (ketemu == false)){
           
            Tengah = (BatasAtas + BatasBawah) / 2;
            if (A[Tengah] == cari){
                ketemu = true;
            } else
                if (A[Tengah] <= cari){
                BatasAtas = Tengah + 1;
            } else {
                BatasBawah = Tengah - 1;
            }
        }
    if (ketemu) {
            System.out.println("Angka : "+ cari + " Data berada di index nomor " + Tengah);
        } else {
            System.out.println("Angka : "+ cari +" Data tidak ditemukan");
        }
        }
    }

Cara kerja Binary search :

·         Data diambil dari posisi 1 sampai posisi N
·         Lalu cari posisi data Tengah dengan rumus (BatasAtas + BatasBawah) / 2
·      Kemudian data yang dicari dibandingkan dengan data Tengah, apakah data itu lebih besar atau lebih kecil.
·         Jika lebih besar, maka (BatasAtas = Tengah + 1)
·         Jika lebih kecil, maka (BatasBawah = Tengah – 1)
·         Jika data yang dicari = data tengah, maka “KETEMU”


Sekian penjelasan  tentang Searching (Pencarian) pada Java , Sequential Search dan Binary Search, semoga bermanfaat.


Nama : Nur Laily Kartiningsih
NIM     : 1200631014

Tidak ada komentar:

Posting Komentar