Metode Binnary Searching di Java Console

dokumen-dokumen yang mirip
Bubble Sort dan Selection Sort di Java Console

Belajar ArrayList di Java

Metode Sequential Searching di Java Console

Insertion Sort Dengan Algoritma Divide And Conquer

ShortHand If Else di Java

Metode Insertion Sort di Java Console

Percabangan dan Perulangan

Enkripsi Karakter - Soal Lomba Pemrograman

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Perulangan / Looping

Belajar Rekursif di Java

MODUL III ARRAYLIST TUGAS PENDAHULUAN

ARRAY, SORTING & SEARCHING

Input Nilai tanpa Case String di Java

Penyeleksi Kondisi / Percabangan

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Latihan Ujian Pemrograman Berorientasi Objek. Semester Genap 2016/2017

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

Topik. 1. Statement if 2. Statement if..else.. 3. Statement if..else.. If (bertingkat ) 4. Penggunaan Input Keyboard

PRAKTIKUM PEMROGRAMAN LANJUT MODUL 1

Modul Praktikum 3 Pemograman Berorientasi Objek

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Percabangan & Perulangan

Pemrograman Berorientasi Objek (PBO) PERTEMUAN X (LOOPING)

Tiopan Indra Wahyudi R5L PROJECT KELOMPOK 7 R5L. package brekk; public class brekk{ public static void main(string[]args){

Teknik Menukarkan 2 Variable tanpa pihak Ketiga

Politeknik Elektronika Negeri Surabaya

Projek Kelompok 7. package (tiopan-programmer java) public class aritmatika1{ public static void main(string[]tiw){ int calculation = 1;

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Politeknik Elektronika Negeri Surabaya

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Tiga Metode Sangat Penting dalam Pemrograman Java Bagi Pemula

MODUL 5 PERULANGAN A. WHILE

Decision and Looping

Kelompok 7. package (tiopan-programmer java) public class aritmatika1{ public static void main(string[]tiw){ int calculation = 1;

Cara Mencari Selisih Waktu di Java

A. TEORI ARRAY 1 DIMENSI

Pemrograman Fery Updi,M.Kom

Method / Fungsi / Sub Program

IF PEMROGRAMAN LANJUT ARRAY. Oleh : Andri Heryandi, M.T.

TIPE DATA Pertemuan (K-03/L-03)

Politeknik Elektronika Negeri Surabaya

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

Membuat Menu Login Sederhana [Full Coding]

DASAR PEMROGRAMAN JAVA. Astrid Lestari Tungadi, S.Kom., M.TI.

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR PROGRAM DENGAN KONDISI

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

SUMBER BELAJAR PENUNJANG PLPG

Array Sebagai Parameter Method

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

SEKUEN, PERCABANGAN & PENGULANGAN

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

int fungsi_2() { int main() { fungsi_1(); fungsi_2(); return 0;

Struktur Kontrol Pemrograman Java : PERCABANGAN

Array Multidimensi. Pemrograman Dasar. Java

TUGAS 1: WIN OR LOSE. package kartu; import java.util.random; public class kartu { /** args the command line arguments

A. TEORI ARRAY 1 DIMENSI

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

Pertemuan 3 Struktur Perulangan pada Java

Pengenalan Java, Tipe Data, Variabel dan Operator. Putu Putra Astawa

24/09/2017 PERCABANGAN

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR PROGRAM PENYEDERHANAAN PECAHAN

Chapter 12.1: package chapter.pkg12; /** * Advan */ import java.util.random; import static java.lang.system.out; public class Chapter12 {

LAPORAN PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK

Percabangan & Perulangan

Sequential Search (Linear Search)

Modul 3 Flow Control dan Input

Algoritma dan Pemrograman

Permainan Remi Sederhana

Pertemuan 2 Struktur Kontrol Percabangan

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Politeknik Elektronika Negeri Surabaya

Mata Kuliah : Pemrograman Berbasis Objek Pertemuan : 4

Pemrograman JAVA INPUT-OUTPUT

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Bab 8 Array. x=a[9]; Untuk memasukkan data ke dalam array, sintak yang digunakan adalah : a[nomor_elemen] = data;

Operator, Statement kondisional, dan Iterasi pada Java

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Parent dan Child di Java

Modul Praktikum 4 Pemograman Berorientasi Objek

ARRAY. 7 th week Estu Sinduningrum ST,MT

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

BAB V. STATEMEN KONTROL

Gambar 1. Ilustrasi Stack

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

BAB V PENYELEKSIAN KONDISI DAN PERULANGAN

Politeknik Elektronika Negeri Surabaya

Array 1 Dimensi pada Java


DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

Pertemuan III [STRUKTUR KONTROL] CariGrade.java Program mencari grade nilai menggunakan struktur control if-else

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

Transkripsi:

Metode Binnary Searching di Java Console Oleh: Yudi Setiawan Dalam pemrograman, pencarian data merupakan suatu hal yang sangat gampang dilakukan. Anda sebagai programmer bisa menggunakan beberapa teknik pemrograman sederhana seperti, Teknik Pengkondisian (IF). Lalu, apakah segampang itu melakukan pencarian Data yang banyak? Sebenarnya itu bisa gampang jikalau Datan... Dalam pemrograman, pencarian data merupakan suatu hal yang sangat gampang dilakukan. Anda sebagai programmer bisa menggunakan beberapa teknik pemrograman sederhana seperti, Teknik Pengkondisian (IF). Lalu, apakah segampang itu melakukan pencarian Data yang banyak? Sebenarnya itu bisa gampang jikalau Datanya masih sedikit namun, bagaimana kalau Datanya sangat banyak seperti mesin pencari Google. Bisa Anda bayangkan bagaimana banyaknya Data yang tersimpan dalam database-nya dan kok bisa hanya dalam beberapa detik apa yang kita cari langsung bisa muncul di hadapan Anda. Sebenarnya, dalam pencarian (searching) ada beberapa teknik yang bisa Anda gunakan seperti, Sequential Searching dan Binnary Searching. Pada artikel ini, saya akan membahas metode Binnary Searching. Apa itu Binnary Searching? Binnary Searching merupakan suatu metode pencarian dimana, Data yang dicari akan dibagi menjadi 2 bagian dan seterusnya akan dibagi menjadi 2 bagian sampai Data yang dicari benar-benar ditemukan. Sebelum masuk ke contoh kasus, berikut adalah aturan yang berlaku dalam proses Binnary Searching. 1. Jika nilai Data ke-n lebih besar dari Data yang dicari maka, index_tengah di kurang 1 atau (Data-N > Data Cari Index_tengah--) dan simpan ke nilai akhir. 2. Jika nilai Data ke-n lebih kecil dari Data yang dicari maka, index_tengah di tambah 1 atau (Data-N < Data Cari Index_tengah++) dan simpan ke nilai awal. 3. Jika nilai Data ke-n ditemukan maka, cetak nilai iterasinya. Catatan, bahwa sebelum melakukan proses pencarian di Binnary Searching Data terlebih dahulu di sorting secara Ascending. Dan berikut ialah contoh kasusnya. Data : 12 9 3 4 20 1-5 Data yang dicari : 1 Proses Binnary Searching : 1. Sorting terlebih dahulu Data secara Ascending. 2. Buatlah tabel berikut. 3. Setelah itu lakukan proses Binnary Searching. Perhatikan tabel berikut.

Penjelasan Proses Binnary Searching Untuk iterasi ke-1, selalu isi nilai Index_Awal dengan 0 dan nilai Index_Akhir dengan nilai Index Terakhir sesuai dengan jumlah Data. Kemudian, Index_Tengah = (Index_Awal + Index_Akhir) / 2. Untuk contoh diatas, Index_Tengah = (0 + 6) / 2 = (6) / 2 = 3. Nilai Data dengan Index 3 ialah 4. Catatan, Data yang akan dipakai dalam proses Binnary Searching ialah Data yang sudah di Sorting. Bandingkan Data yang dicari dengan nilai Data. Karena 4 lebih besar dari 1 atau (Data ke-n lebih besar dari Data yang dicari) maka, untuk iterasi berikutnya ubah Index_Akhir menjadi Index_Akhir = Index_Tengah 1. Untuk langkah ini, lebih baik Anda baca lagi peraturan yang ada dalam proses Binnary Searching yang sudah saya jelaskan diatas. Untuk iterasi ke-2, nilai Index_Awal tetap 0 (Karena, nggak ada perubahan). Nilai Index_Akhir = 2 (Karena, pada iterasi sebelumnya Data-n > Data_Cari). Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (0 + 2) / 2 = (2) / 2 = 1. Nilai Data dengan Index 1 ialah 1. Data yang dicari = 1 dan Data ke-n = 1 maka, Data ditemukan. Proses Pencarian berhenti dan cetak Data dengan nilai 1 ditemukan pada iterasi ke-2. Gimana??? masih belum paham ya??? Ini saya berikan 1 contoh kasus lagi dengan Data yang sama namun, nilai yang dicari berbeda. Data : 12 9 3 4 20 1-5 Data yang dicari : 12 Proses Binnary Searching : 1. Sorting terlebih dahulu Data secara Ascending 2. Buatlah tabel berikut 3. Setelah itu, lakukan proses Binnary Searching. Seperti pada tabel berikut. Penjelasan Proses Binnary Searching Untuk iterasi ke-1, Index_Awal = 0 (Untuk iterasi ke-1, index_awal memang harus 0). Index_Akhir = 6 (Sesuaikan dengan jumlah Data yang ada). Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (0 + 6) / 2 = (6) / 2 = 3. Nilai Data dengan index 3 ialah 4. Nilai Data = 4. Selanjutnya, lakukan pengecekan. Karena Nilai Data < Data yang dicari (4 < 12) maka, untuk iterasi berikutnya Index_Awal = Index_Tengah + 1. Untuk contoh diatas maka, Index_Awal = 3 + 1 = 4. Ingat!!! Peraturan yang sudah saya uraikan diatas. Untuk iterasi ke-2, Index_Awal = 4 (Karena pada iterasi sebelumnya, Nilai Data < Data yang dicari). Index_Akhir = 6(Tetap tak ada perubahan). Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (4 + 6) / 2 = (10) / 2 = 5. Nilai Data dengan index 5 ialah 12. Lakukan pengecekan, Data ke-n = 12 dan Data yang dicari = 12 maka, Data yang dicari ditemukan. Proses pencarian berhenti dan tampilkan output Data yang dicari ditemukan pada iterasi ke-2. Kebetulan untuk diatas, pencariannya dilakukan terhadap Data yang memang ada. Bagaimana, kalau Data yang tidak ada. Ok, saya lanjutkan lagi ya dengan 1 contoh kasus terakhir terhadap pencarian data yang memang benar benar tidak ada. Masih dengan Data yang sama.

Data : 12 9 3 4 20 1-5 Data yang dicari : 10 Proses Binnary Searching : 1. Sorting terlebih dahulu Data secara Ascending. 2. Buat tabel berikut. 3. Lakukan proses Binnary Searching. Seperti tabel berikut. Penjelasan Proses Binnary Searching Untuk iterasi ke-1, Index_Awal = 0, Index_Akhir = 6, Index_Tengah = 3 dan Data dengan index 3 ialah 4. Karena, 4 lebih kecil dari 10 (Data ke-n < Data yang dicari) maka, untuk iterasi berikutnya Index_Awal = Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (0 + 6) / 2 = 6 / 2 = 3. Data dengan index 3 ialah bernilai 4. Lakukan pengecekan, karena 4 < 10 (Data ke-n < Data yang dicari) maka, untuk iterasi berikutnya Index_Awal = Index_Tengah + 1. Untuk iterasi ke-2, Index_Awal = 4 (Karena, pada iterasi sebelumnya Data ke-n < Data yang dicari), Index_Akhir = 6 (Tetap), Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (4 + 6) / 2 = 10 / 2 = 5. Data dengan index 5 ialah bernilai 12. Lakukan pengecekan, karena 12 > 10 (Data ke-n > Data yang dicari) maka, untuk iterasi berikutnya, Index_Akhir = Index_Tengah 1. Untuk iterasi ke-3, Index_Awal = 4 (Tetap), Index_Akhir = 4 (Karena, pada iterasi sebelumnya Data ke-n > Data yang dicari), Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (4 + 4) / 2 = 8 / 2 = 4. Data dengan index 4 ialah bernilai 9. Lakukan pengecekan, karena 9 < 10 (Data ke-n < Data yang dicari) maka, untuk iterasi berikutnya, Index_Awal = Index_Tengah + 1 4 + 1 = 5. Untuk iterasi ke-4, Index_Awal = 5 (Karena, pada iterasi sebelumnya Data ke-n < Data yang dicari), Index_Akhir = 4 (Tetap), Index_Tengah = (Index_Awal + Index_Akhir) / 2 = (5 + 4) / 2 = 9 / 2 = 4 (Gunakan sifat integer). Lakukan pengecekan, karena 9 < 10 (Data ke-n < Data yang dicari) maka, untuk iterasi berikutnya, Index_Awal = Index_Tengah + 1 4 + 1 = 5. Kalau Anda lanjutkan ini secara terus menerus maka, hasilnya akan tetap sama dan itu menandakan bahwa Data yang Anda cari tidak ditemukan. Hentikan proses pencarian, dan cetak output Data yang dicari tidak ditemukan. Berikut ialah source code untuk program Binnary Searching. Ket : data.length --> method untuk mengetahui nilai panjang dari sebuah array atau banyaknya elemen di dalam array. import java.util.scanner; /** * * @author Yudi Setiawan * * Binnary Searching. * */

public class BinnarySearching public static void main(string[] args) // Objek Scanner Scanner scan = new Scanner(System.in); // Input jumlah Data System.out.print("Masukkan jumlah Data : "); jlh_data = scan.nextint(); int // Input nilai tiap Data int[] data = new int[jlh_data]; System.out.println(); for(int a = 0; a < jlh_data; a++) System.out.print("Nilai Data ke-"+(a+1)+" : "); data[a] = scan.nextint(); // Urutkan Data secara Ascending setsortasc(data); // Panggil procedure // Tampilkan hasil Sorting System.out.println("\nData Setelah di Urutkan"); System.out.print("Data : "); for(int a = 0; a < jlh_data; a++) System.out.print(data[a]+"\t"); System.out.println(); System.out.print("Index : "); for(int a = 0; a < jlh_data; a++) System.out.print(a+"\t"); // Input nilai yang dicari System.out.print("\n\nMasukkan nilai yang dicari : "); int cari = scan.nextint(); // Proses Binnary Searching int index_awal = 0, index_akhir = data.length - 1, index_tengah = (index_awal + index_akhir) / 2; int nilai_data = data[index_tengah]; int temp_data = 0; int iterasi = 0, sama = 0; boolean temu = false; System.out.println("\n\nProses Binnary Searching"); System.out.println("\nIterasi\tIndex_Awal\tIndex_Akhir\tIndex_Tengah\tNila i_data"); while(temu == false)

iterasi++; index_tengah = (index_awal + index_akhir) / 2; System.out.print(iterasi+"\t\t"+index_awal+"\t\t"+index_akhir+"\t\t"+index _tengah+"\t\t"+data[index_tengah]); if(data[index_tengah] == cari) temu = true; System.out.println(" --> Data ditemukan"); else if(data[index_tengah] > cari) index_akhir = index_tengah - 1; System.out.println(" --> "+data[index_tengah]+" > "+cari+" maka, index_akhir = index_tengah - 1"); else if(data[index_tengah] < cari) index_awal = index_tengah + 1; System.out.println(" --> "+data[index_tengah]+" < "+cari+" maka, index_awal = index_tengah + 1"); // Kondisi jika ternyata Data yang dicari tidak ditemukan, maka pasti // akan kejadian nilai Data yang sama secara terus menerus if(temp_data!= data[index_tengah]) temp_data = data[index_tengah]; else sama++; // Jika sudah sama sebanyak 3 kali maka, proses pencarian berhenti. if(sama >= 3) break; ke-"+iterasi); if(temu == true) System.out.println("\nData ditemukan pada iterasi else System.out.println("\nData tidak ditemukan"); // Procedure untuk mengurutkan Data secara Ascending static void setsortasc(int[] data)

for(int x = 0; x < data.length; x++) for(int y = 0; y < data.length - 1; y++) if(data[y] > data[y+1]) // Proses Pertukaran data int temp = data[y]; data[y] = data[y+1]; data[y+1] = temp; Tentang Penulis Yudi Setiawan Saat ini aktif sebagai Mahasiswa di salah satu Universitas di kota Medan dengan mengambil bidang Fakultas Teknik dan Ilmu Komputer. Sangat senang dengan bahasa pemrograman Java dan Android.