public static int sequentialSearch(int key, int data[]) {
// langkah looping untuk mengetahui apakah suatu data ada dalam array
for (int i = 0; i < data.length; i++) {
// langkah pengujian apakah data ke i = key
if (key == data[i]) {
// jika ya dikembalikan ke nilai i dan data ditemukan
return i;
}
}
// jika tidak dikembalikan ke nilai -1 dan data tidak ditemukan
return -1;
}
public static int binarySearch(int key, int data[]) {
// inisialisasi nilai indek awal dan indek akhir
int indekAwal = 0;
int indekAkhir = data.length - 1;
// langkah pengujian apakah indek awal <= indek akhir
while (indekAwal <= indekAkhir) {
// mencari nilai indek tengah
int indektengah = (indekAwal + indekAkhir) / 2;
// membandingkan apakah nilai indek tengah = key
if (data[indektengah] == key) {
return indektengah;
// jika tidak dilakukan pengetesan larik kiri
} else if (data[indektengah] > key) {
indekAkhir = indektengah - 1;
// jika tidak dilakukan pengetesan larik kanan
} else if (data[indektengah] < key) {
indekAwal = indektengah + 1;
}
}
// nilai pengembalian jika nilai indek tengah = key
return -1;
}
public static int interpolationSearch(int key, int data[]) {
// inisialisasi nilai indek awal dan indek akhir
int indekAwal = 0;
int indekAkhir = data.length - 1;
// langkah pengujian apakah indek awal <= indek akhir
while (indekAwal <= indekAkhir) {
// mencari indek tengah
int indektengah = indekAkhir + ((key - data[indekAkhir])*
(indekAwal - indekAkhir)) / (data[indekAwal] -
data[indekAkhir]);
// membandingkan apakah indek tengah = key
if (data[indektengah] == key) {
return indektengah;
// jika tidak dilakukan penegetsan larik kiri
} else if (data[indektengah] > key) {
indekAkhir = indektengah - 1;
// jika tidak dilakukan pengetesan larik kanan
} else if (data[indektengah] < key) {
indekAwal = indektengah + 1;
}
}
// nilai pengembalian jika nilai indek tengah = key
return -1;
}
}
import java.util.Arrays;
import java.util.Scanner;
public class SearchingMain {
public static void main(String[] args) {
int data[] = {10, 69, 3, 30, 61, 86, 14, 43, 9, 15, 45, 13};
System.out.println("DATA SEBELUM DIURUTKAN");
for (int n = 0; n < data.length; n++) {
System.out.printf(" " +data[n]);
}
System.out.println();
Arrays.sort(data);
System.out.println("DATA SETELAH DIURUTKAN");
for (int n = 0; n < data.length; n++) {
System.out.printf(" " +data[n]);
}
System.out.println();
System.out.println();
System.out.println("MODEL SEQUENTIAL SEARCH");
System.out.printf("Masukkan nilai yang diinginkan = ");
int key = new Scanner(System.in).nextInt();
int x = Larik.sequentialSearch(key, data);
if (x == -1) {
System.out.printf("Angka "+key+" tidak ditemukan dalam indek");
}
else {
System.out.printf("Angka "+key+" ditemukan dan terletak "
+ "pada indek ke- "+x);
}
System.out.println();
System.out.println();
System.out.println("MODEL BINARY SEARCH");
System.out.printf("Masukkan nilai yang diinginkan = ");
int key2 = new Scanner(System.in).nextInt();
int y = Larik.binarySearch(key2, data);
if (y == -1) {
System.out.println("Angka "+key2+" tidak ditemukan dalam indek");
} else {
System.out.println("Angka "+key2+" ditemukan dan terletak "
+ "pada indek ke- "+y);
}
System.out.println();
System.out.println("MODEL INTERPOLATION SEARCH");
System.out.printf("Masukkan nilai yang diinginkan = ");
int key3 = new Scanner(System.in).nextInt();
int z = Larik.interpolationSearch(key3, data);
if (z == -1) {
System.out.println("Angka "+key3+" tidak ditemukan dalam indek");
} else {
System.out.println("Angka "+key3+" ditemukan dan terletak "
+ "pada indek ke- "+z);
}
}
}