
Kali ini saya akan mencoba
membahas tentang metode pencarian (searching) dalam java , berikut
penjelasannya :
Metode Searching
Searching merupakan suatu proses pencarian data dari sejumlah data yang
ada. Pencarian data dapat dilakukan
pada sejumlah data yang sudah terurut atau
juga pada data yang belum terurut.
Kali ini saya akan menggunakan 2 metode pencarian , yaitu :
a)
Sequential Searching (Pencarian Berurutan)
b)
Binary Seacrh (Pencarian Biner)
Sequential Searching (Pencarian Berurutan)
Metode ini merupakan metode paling
sederhana, metodenya adalah data yang dicari dibandingkan satu per satu sampai data tersebut ditemukan atau tidak
ditemukan dalam deret
array (isi data). Pada saat data yang dicari sudah ditemukan, maka proses pencarian
langsung dihentikan. Tetapi jika belum ditemukan, maka pencarian diteruskan
sampai seluruh data dibandingkan.
berikut contoh source codenya :
package
SEARCHING;
public
class SEQUENTIAL_SEARCH {
public static void main(String[] args) {
System.out.println("*****
SEQUENTIAL SEARCH *****"+"\n" );
int data[] = {12, 22, 34, 78, 98 , 45
}; //isi array
int key = 98; //nilai yang dicari
int N = 6; //batas array
//menampilkan data Array
System.out.print("isi data adalah:
");
for (int i = 0; i < data.length;
i++) {
System.out.print(data[i] + "
");
}
System.out.println("");
for (int i = 0; i <= N; i++) {
if (key == data[i]) { //nilai data
yang dicari sama dengan data yang dicari
System.out.print("Data
"+key+" berada pada index ke - " + i);
break; //stop perulangan
}
}
System.out.println("\n");
System.out.println();
System.out.println(" ***** Terima
Kasih ***** ");
}
}
Berikut outputnya :
Binary Seacrh (Pencarian Biner)
Metode ini digunakan jika sejumlah
data telah diurutkan. Jika dibandingkan
dengan metode awal tadi metode ini
jauh lebih cepat. Secara garis besar metode ini bisa dijelaskan sebagai
berikut. Urutkan dahulusejumlah data. Lalu bagi dua data-data tadi dengan
jumlah data yang sama pada masing-masingnya. Kemudian data dibandingkan dengan data terakhir dari subdata yang pertama. Jika data yang
dicari lebih keci, pencarian
dilanjutkan pada sub data pertama dengan terlebih dahulu membagi dua lagi data-data tersebut dengan jumlah yang sama. Tetapi jika data yang dicari lebih besar dari data terakhir sub data pertama, berarti data yang dicari kemungkinan terletak pada
subdata yang kedua Proses diatas dilakukan berulang sampai data ditemukan atau
tidak ditemukan
contoh source codenya :
package
SEARCHING;
public
class BINARY_SEARCH {
public static void main(String[] args) {
System.out.println("*****
BINARY SEARCH *****"+"\n" );
//pendeklarasian variabel
int A[] = {12, 22, 24, 34, 54};
int cari = 12;
int N = 5;
int batasbawah = N - 1;
int batasatas = 0;
boolean ketemu = false;
int tengah = 0;
//menampilkan data dalam array
System.out.print("isi data adalah
");
for (int i = 0; i < A.length; i++) {
System.out.print(A[i] + "
");
}
System.out.println("");
while
((batasatas < batasbawah) && (!ketemu)) { //perulangan dua kondisi
dimana batasatas < batas bawah dan nilai boolean tidak ketemu
tengah =
(batasatas + batasbawah) / 2; //mencari nilai tengah denga cara
batasatas+batasbawah dibagi 2
if (A[tengah] == cari) { //koondisi
nilai tengah sama dengan data yang dicari
ketemu = true; //maka kondisi
ketemu adaah true
} else {
if (A[tengah] < cari) {
//sebaliknya jika nilai tengah <dari yng dicari
batasatas = tengah++;
//maka batas atas = nilai tenga + 1
} else { //kondisi sebaliknya maka nilai
atas = nilai tengah - 1
batasatas = tengah--;
}
}
}
//mencetak hasil dari pencarian :
if (ketemu) {
System.out.println("Data
" + cari + " Telah ditemukan pada index ke " +(tengah + "
beris ke " + (tengah + 1)));
} else {
System.out.println("Data
" + cari + " Tidak ditemukan");
}
System.out.println("\n");
System.out.println(" ***** Terima
Kasih ***** ");
}
}
Berikut outputnya :
Sekian , semoga bermanfaat (1200631023)