PENCARIAN (SEARCHING)
Operasi pencarian adalah operasi
untuk menemukan sebuah nilai (data) di dalam sekumpulan nilai yang bertipe sama. Untuk menemukan nilai yang kita cari, instruksi yang paling penting
yang harus dilakukan adalah memeriksa jika nilai yang kita cari sama dengan
salah satu nilai dalam kumpulan nilai yang dimaksud. Metode pencarian yang
bisa kita pergunakan tergantung dari:
- Bagaimana
urutan nilai-nilai di dalam kumpulan nilai.
- Bagaimana
struktur data yang dipergunakan untuk menyusun nilai-nilai tersebut.
Kita dapat mempergunakan baik metode pencarian beruntun (sequential) maupun metode pencarian biner (binary search), jika:
- Nilai-nilai tersebut sudah tersusun secara berurutan, dan
- Nilai-nilai tersebut disusun ke dalam bentuk larik (array) atau struktur data sejenis yang masing-masing nilai tersimpan dalam bagian-bagian yang mempunyai indeks yang unik dan indeksnya berurutan dari yang paling kecil hingga yang paling besar (bersifat ordinal).
Kita dapat
mempergunakan metode pencarian beruntun atau linear (sequential search atau linear
search) jika:
- Nilai-nilai
tersebut belum berurutan.
- Nilai-nilai
tersebut sudah berurutan, tetapi struktur data yang dipergunakan untuk
menyimpan nilai-nilai tersebut adalah senarai.
Binary Searching
import javax.swing.*;
public class binarySearching
{
public static void main(String[] args)
{
int A[]= {10,20,30,40,50,60,70,80,90};
int i=0, n=0, r, x,mid=0;
boolean ketemu = false;
x = Integer.parseInt(JOptionPane.showInputDialog( "CARI:"));
System.out.println("Data yang dicari: "+ x);
i = 0;
n = A.length;
r = n-1;
while (i<=r)
{
mid =(i+r)*1/2;
if (A[mid]== x)
{
ketemu = true;
break;
}
else if(A[mid]>x)
{
r = mid-1;
}
else
i = mid+1;
}
if (ketemu ==true)
{
System.out.println("KETEMU");
}
else
{
System.out.println("dak ADOOO...!");
}
}
}
Sequential Searching
import javax.swing.*;
public class seq_Searching
{
public static void main(String [] args)
{
int A[]={30,20,50,70,60,10,90,80,40};
String x_cari;
int x, ketemu=0;
x_cari = JOptionPane.showInputDialog ("Cari Data:" );
x = Integer.parseInt(x_cari);
System.out.println("Cari Data (x):"+ x);
for (int i=0;i<9; i++)
{
if (A[i]==x)
{
ketemu = 1;
break;
}
}
if (ketemu==1)
{
System.out.println("KETEMU di INDEX ke-" + i);
}
else
{
System.out.println("TIDAK KETEMU");
}
}
}
Sentinel Searching
import javax.swing.*;
public class sentinel_searching
{
public static void main(String [] args)
{
String x_cari;
int x=0, j=0;
int A[]={100,200,500,800,400,300,600,1000,900,x };
x_cari = JOptionPane.showInputDialog ("Cari Data:" );
x = Integer.parseInt(x_cari);
A[9] = x;
System.out.println("Cari Data (x):"+ x);
System.out.println(" ");
while (A[j]!=x)
{
if (A[j]==x)
{
break;
}
else
{
j = j+1;
}
}
if (j<9)
{
System.out.println("KETEMU DI INDEX KE-" + j);
JOptionPane.showMessageDialog (null,"PENCARIAN DATA :"+x+"KETEMU DI INDEX KE-" + j);
}
else
{
System.out.println(" KETEMU di SENTINEL");
JOptionPane.showMessageDialog (null,"PENCARIAN DATA :"+x+"TIDAK KETEMU(data sentinel)" );
}
}
}