Definisi Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut. Tempat pencarian data tersebut dapat berupa array dalam memori, bisa juga pada file pada external storage.
Sequential Search
sequential 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. Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal). Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal).
Misal terdapat array satu dimensi sebagai berikut.
Contoh Programbuat file bernama searching_sequential.java.
import java.io.*;
public class searching_sequential {
public static void main(String[] arg) throws IOException {
int data[] = {8, 10, 6, -2, 11, 7, 1, 100};
int cari;
int flag = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Masukkan data yang ingin dicari : ");
cari = Integer.parseInt(in.readLine());
for (int i=0; i<8; i++){
if (data[i] == cari){
flag = 1;
}
}
if (flag == 1)
System.out.println("Data ada ");
else
System.out.println("Data tidak ada ");
}
}
Binary Search
Teknik searching dengan Binary Seacrh data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian. teknik pencarian data dalam dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pengurutan.
Missal data yang dicari 17, karena 17 = 17 (data tengah), maka ketemu.
import java.io.*;
public class searching_binary {
public static void main(String[] arg) throws IOException {
int[] data = new int[9];
//int data[9] = {3, 9, 11, 12, 15, 17, 23, 31, 35}
data[0] = 3;
data[1] = 9;
data[2] = 11;
data[3] = 12;
data[4] = 15;
data[5] = 17;
data[6] = 23;
data[7] = 31;
data[8] = 35;
int l, r, m, n, ketemu, cari;
n = 9;
l = 0;
r = n - 1;
ketemu = 0;
cari = 17;
while ((l<=r) && (ketemu == 0)){
m = (l+r)/2;
System.out.println("data tengah :"+ m);
if (data[m] == cari)
ketemu = 1;
else if (cari < data[m]){
System.out.println("Cari di kiri ");
r = m - 1;
}
else{
l=m+1;
System.out.println("Cari di kanan ");
}
}
if (ketemu==1)
System.out.println("data ada");
else
System.out.println("data tidak ada");
}
}
0 Response to "Searching Pada Java "
Posting Komentar