🖥️
JTI - Modul Praktikum: Algoritma dan Struktur Data
  • 👋Selamat Datang!
  • 🔰Refreshment
    • 🔰Job Sheet 1: Objek
    • 🔰Job Sheet 2 - Array of Objects
  • 📚Dasar Struktur Data
    • 📚Job Sheet 3: Brute Force & Divide Conquer
      • 🐣Praktikum 1
      • 🐥Praktikum 2
      • 🐔Tugas Praktikum
  • 🔍Job Sheet 4: Sorting dan Searching
    • 🧮Praktikum 1: Sorting
    • 🔭Praktikum 2: Searching
    • 📚Tugas Praktikum
  • 📈Struktur Data Linier
    • 🧮Job Sheet 5: Stack
      • 👔Praktikum 1
      • ♾️Praktikum 2
      • 📲Tugas Praktikum
    • ⛓️Job Sheet 6: Queue
      • 🧬Praktikum 1
      • 💸Praktikum 2
      • 💷Tugas
    • 🔗Job Sheet 7: Single Linked List
      • 📂Praktikum 1
      • 🗂️Praktikum 2
      • 🗃️Tugas
    • ➿Job Sheet 8: Doubly Linked List
      • 📕Praktikum 1
      • 📗Praktikum 2
      • 📘Praktikum 3
      • ✍️Tugas Praktikum
  • 🎆STRUKTUR DATA NON LINEAR
    • 🌳Job Sheet 9: Tree
      • 🌴Praktikum 1
      • 🎋Praktikum 2
      • 🎄Tugas
    • 🗺️Job Sheet 10: Graf
      • 🛣️Praktikum 1
      • 🛤️Praktikum 2
      • 🏔️Tugas
    • 🌏Job Sheet 11: Hash Table
      • 🌎Praktikum 1
      • 🌍Tugas
    • 🎄Job Sheet 12: Heap
      • 🌿Praktikum 1
      • 🎋Tugas
    • ⛰️Job Sheet 13: Java Collection
      • 🌄Praktikum 1
      • 🏔️Praktikum 2
      • 🗻Praktikum 3
      • 🌏Praktikum 4
      • 🌎Praktikum 5
      • 🌋Tugas Praktikum
  • 🧑‍🏫Kontributor
Powered by GitBook
On this page
  • Pengantar
  • Searching dengan Sequential Search
  • Searching dengan Binary Search
  1. Job Sheet 4: Sorting dan Searching

Praktikum 2: Searching

PreviousPraktikum 1: SortingNextTugas Praktikum

Last updated 1 year ago

Pengantar

Pada pratikum kali ini, kita akan menggunakan kasus yang serupa dengan praktikum sebelumnya. Terdapat dua class yang dibutuhkan, yaitu Mahasiswa dan PencarianMhs. Class PencarianMhs digunakan untuk mencari mahasiswa yang diinginkan. Perhatikan class diagram berikut ini,

Searching dengan Sequential Search

  • Buatlah projek dengan nama "Searching".

  • Buatlah class Mahasiswa seperti berikut.

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);
    }
}
  • Buatlah class PencarianMhs seperti berikut,

public class PencarianMhs {
    Mahasiswa listMhs[] = new Mahasiswa[5];
    int idx;
    
    // method tambah()
    
    // method tampil()
    
    // method findSeqSearch()
    
    // method tampilPosisi()
    
    // method tampilData()
}
  • Buatlah method tambah() didalam class PencarianMhs.

// method tambah()

public void tambah(Mahasiswa m) {
    if(idx<listMhs.length) {
        listMhs[idx] = m;
        idx++;
    } else {
        System.out.println("Data sudah penuh!");
    }
}
  • Tambahkan method tampil() pada class PencarianMhs.

// 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("----------------------");
    }
}
  • Buatlah method findSeqSearch() yang akan digunakan untuk mencari data menggunakan algoritma sequential searching.

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;
}
  • Selanjutnya buatlah method tampilPosisi().

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");
    }
}
  • Lanjutkan dengan membuat method tampilData().

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");
    }
}
  • Terakhir, buatlah sebuah main class untuk melakukan pengujian terhadap metode pencarian yang telah dibuat.

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);
        }
    }
}
  • Verifikasi proses input data hasil tampil keseluruhan data

  • Verifikasi Hasil Pencarian Data

Searching dengan Binary Search

Pada praktikum ini, kita perlu membuat method baru untuk melakukan pencarian dengan algoritma binary search.

  • Buatlah method baru, yaitu findBinarySearch() pada class PencarianMhs.

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;
}
  • Tambahkan kode berikut pada main class untuk pengecekan method findBinarySearch().

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);
  • Verifikasi hasil pencarian

🔍
🔭
Gambar 4.2.1. Class Diagram Mahasiswa
Gambar 4.2.2 Class Diagram PencarianMhs