๐ญPraktikum 2: Searching
Pengantar


Searching dengan Sequential Search
Searching dengan Binary Search
Last updated


Last updated
public class Mahasiswa {
public int nim;
public String nama;
public int umur;
public double ipk;
Mahasiswa(int ni, String n, int u, double i {
this.nim = ni;
this.nama = n;
this.umur = u;
this.ipk = i;
}
public void tampil() {
System.out.println("Nim = "+nim);
System.out.println("Nama = "+nama);
System.out.println("Umur = "+umur);
System.out.println("IPK = "+ipk);
}
}public class PencarianMhs {
Mahasiswa listMhs[] = new Mahasiswa[5];
int idx;
// method tambah()
// method tampil()
// method findSeqSearch()
// method tampilPosisi()
// method tampilData()
}// method tambah()
public void tambah(Mahasiswa m) {
if(idx<listMhs.length) {
listMhs[idx] = m;
idx++;
} else {
System.out.println("Data sudah penuh!");
}
}// method tampil()
public void tampil() {
// fungsi loop for berikut
// akan melakukan looping
// sejumlah objek didalam list
// secara langsung
for (Mahasiswa m : listMhs) {
m.tampil()
System.out.println("----------------------");
}
}public int findSeqSearch(int cari) {
int posisi = -1;
for(int j=0; j < listMhs.length; j++) {
if(listMhs[j].nim==cari) {
posisi = j;
}
}
return posisi;
}public void tampilPosisi(int x, int pos) {
if(pos!=-1) {
System.out.println("data : "+ x +"ditemukan pada indeks " + pos);
} else {
System.out.println("data : "+ x +"tidak ditemukan");
}
}public void tampilData(int x, int pos) {
if(pos!=-1) {
System.out.println("Nim\t : " + x);
System.out.println("Nama\t : " + listMhs[pos].nama);
System.out.println("Umur\t : " + listMhs[pos].umur);
System.out.println("IPK\t : " + listMhs[pos].ipk);
} else {
System.out.println("data : "+ x +"tidak ditemukan");
}
}public class MahasiswaMain {
public static void main(String[] args) {
Scanner s = new Scanner(System.in); // pastikan import package scanner
Scanner sl = new Scanner(System.in);
PencarianMhs data = new PencarianMhs();
int jumMhs = 5;
System.out.println("-----------------------------------");
System.out.println("Masukkan data mahasiswa secara urut dari Nim Tekecil");
for(int i=0; i < jumMhs; i++) {
System.out.println("----------------");
System.out.print("Nim\t: ");
int nim = s.nextInt();
System.out.print("Nama\: ");
String nama = sl.nextLine();
System.out.print("Umur\t : ");
int umur = s.nextInt();
System.out.print("IPK\t : ");
double ipk = s.nextDouble();
Mahasiswa m = new Mahasiswa(nim, nama, umur, ipk);
data.tambah(m);
System.out.println("-----------------------------------");
System.out.println("Data keseluruhan Mahasiswa");
data.tampil();
// Proses pencarian data
System.out.println("___________________________________");
System.out.println("Pencarian Data : ");
System.out.println("Masukkan Nim Mahasiswa yang dicari: ");
Sytem.out.print("NIM: ");
int cari = s.nextInt();
System.out.println("menggunakan sequential Search");
int posisi = data.findSeqSearch(cari);
// Tampilkan posisi data
data.tampilPosisi(cari, posisi);
// Tampilkan data hasil pencarian
data.tampilData(cari, posisi);
}
}
}public int findBinarySearch(int cari, int left, int right) {
// method ini berlaku untuk sorting ascending
int mid;
if(right >= left) {
mid = (left + right) / 2;
if(cari == listMhs[mid].nim) {
return mid;
} else if(listMhs[mid].nim > cari) {
return findBinarySearch(cari, left, mid - 1); // rekursif
} else {
return findBinarySearch(cari, mid + 1, right); // rekursif
}
}
return -1;
}System.out.println("====================================");
System.out.println("menggunakan binary Search");
int posisi = data.findBinarySearch(cari, 0, jumMhs -1);
// Tampilkan posisi data
data.tampilPosisi(cari, posisi);
// Tampilkan data hasil pencarian
data.tampilData(cari, posisi);