Followers

Saturday, May 11, 2019

String Binary Search menggunakan Java

Metode Searching (pencarian) dalam java sebenarnya ada 2 macam yaitu
  1. Metode Skuensial
  2. Metode Binary Search
Pembahasan kedua metode tersebut akan dibahas pada postingan yang berbeda. pada kesempatan kali ini, admin akan memberikan contoh program untuk mencari "kata/string" menggunakan metode Binary Searching.

Sebelum lanjut kecontoh program, ada baiknya teman-teman memahami metode shorting terlebih dahulu, karena sebelum mencari data menggunakan metode binary searching, data terlebih dahulu dirutkan. Untuk pembahasan mengenai shorting teman-teman bisa cek disini.

Langsung saja ke pokok pembahasan.

langkah 1: import java Scanner. agar pencarian lebih dinamis dengan user dapat memasukkan kata yang ingin dicari.
import java.util.Scanner;

Dan jangan lupa dalam kelas buatkan object untuk kelas yang diimport.
static Scanner input = new Scanner(System.in);

langkah 2: buat fungsi untuk melakukan Shorting data string
public static void Shorting(String[] string) {
        for (int i = 0; i < string.length - 1; i++) {
            int min = i;
            for (int elemen = i + 1; elemen < string.length; elemen++) {
                if (string[elemen].compareTo(string[min]) < 0)
                    min = elemen;
            }
            String temp = string[i];
            string[i] = string[min];
            string[min] = temp;
        }
    }
langkah 3: buat fungsi untuk melakukan Searching data string(binary search)
       public static void BinarySearch(String[] string) {
        int batasAtas = string.length - 1;
        int batasBawah = 0;

        System.out.print("Masukkan string yang dicari :");
        String cari = input.next();
        boolean notFound = true;
        while (notFound) {
            int posisiSekarang = (batasAtas + batasAtas) / 2;
            if (string[posisiSekarang].equals(cari)) {
                notFound = false;
                System.out.println("ditemukan " + cari);
            } else if (batasBawah > batasAtas) {
                System.out.println("Tidak ditemukan " + cari);
                break;
            } else {
                if (string[posisiSekarang].compareTo(cari) < 0)
                    batasBawah = posisiSekarang + 1;
                else
                    batasAtas = posisiSekarang - 1;
            }
        }
    }
langkah 4: buat fungsi utama kelas(kelas main)
     public static void main(String[] args) {
        String string[];
        System.out.print("Masukkan jumlah string (min.5):");
        string = new String[input.nextInt()];
        for (int i = 0; i < string.length; i++) {
            System.out.print("Masukkan string ke :" + (i + 1) + " :");
            string[i] = input.next();
        }
        //Shorting before searching with binary search
        Shorting(string);
        BinarySearch(string);
    }
Full Code:
import java.util.Scanner;
public class tugas {
    static Scanner input = new Scanner(System.in);

    public static void Shorting(String[] string) {
        for (int i = 0; i < string.length - 1; i++) {
            int min = i;
            for (int elemen = i + 1; elemen < string.length; elemen++) {
                if (string[elemen].compareTo(string[min]) < 0)
                    min = elemen;
            }
            String temp = string[i];
            string[i] = string[min];
            string[min] = temp;
        }
    }

    public static void BinarySearch(String[] string) {
        int batasAtas = string.length - 1;
        int batasBawah = 0;

        System.out.print("Masukkan string yang dicari :");
        String cari = input.next();
        boolean notFound = true;
        while (notFound) {
            int posisiSekarang = (batasAtas + batasAtas) / 2;
            if (string[posisiSekarang].equals(cari)) {
                notFound = false;
                System.out.println("ditemukan " + cari);
            } else if (batasBawah > batasAtas) {
                System.out.println("Tidak ditemukan " + cari);
                break;
            } else {
                if (string[posisiSekarang].compareTo(cari) < 0)
                    batasBawah = posisiSekarang + 1;
                else
                    batasAtas = posisiSekarang - 1;
            }
        }
    }

    public static void main(String[] args) {
        String string[];
        System.out.print("Masukkan jumlah string :");
        string = new String[input.nextInt()];
        for (int i = 0; i < string.length; i++) {
            System.out.print("Masukkan string ke :" + (i + 1) + " :");
            string[i] = input.next();
        }
        //Shorting before searching with binary search
        Shorting(string);
        BinarySearch(string);
    }
}

Output 1:
Masukkan jumlah string :5
Masukkan string ke :1 :buku
Masukkan string ke :2 :koran
Masukkan string ke :3 :majalah
Masukkan string ke :4 :kursi
Masukkan string ke :5 :mouse
Masukkan string yang dicari :kursi
ditemukan kursi
Output 2:
Masukkan jumlah string :5
Masukkan string ke :1 :mouse
Masukkan string ke :2 :laptop
Masukkan string ke :3 :gelas
Masukkan string ke :4 :kursi
Masukkan string ke :5 :handphone
Masukkan string yang dicari :piring
Tidak ditemukan piring

4 comments: