Akhirnya posting juga setelah beberapa minggu nggak posting, dan lagi lagi postingan kali ini membahas tentang perkuliahan.
Baik, materi yang kemarin saya dapat adalah mengenai Searching
Berikut sedikit penjelasan dari slide perkuliahan kemarin, hehe..
Searching pada struktur data adalah :Berikut sedikit penjelasan dari slide perkuliahan kemarin, hehe..
- Proses mendapatkan (retrieve) informasi berdasarkan kunci (key) tertentu dari sejumlah informasi yang telah disimpan.
- proses pencarian data yang ada pada suatu deret data dengan cara menelusuri data-data tersebut.
- Kunci (key) digunakan untuk melakukan pencarian record yang diinginkan didalam suatu list.
- Tahapan paling penting pada searching: memeriksa jika data yang dicari sama dengan data yang ada pada deret data.
Jenis searching :
- Single match : Pencarian yang menghasilkan satu data. Contoh : mencari mahasiswa dengan nim “120651234”
- Multiple match : Pencarian yang memungkinkan menghasilkan beberapa data. Contoh : mencari mahasiswa dengan ipk >= 3.5
Algoritma Search
- Sequential Search
- Merupakan teknik yang sederhana dan langsung dapat digunakan pada struktur data array.
- Pencarian data secara urut mulai dari data pertama sampai kunci yang dicari ditemukan atau sampai seluruh data telah dicari dan tidak ditemukan
- Dilakukan pada data yang tidak terurut
import javax.swing.JOptionPane;//import yang berfungsi untuk memanggil JOptionPane public class SeqSearch {//kelas SeqSearch //deklarasi variable int x; //deklarasi array int[] s = new int[5]; //deklarasi boolean boolean found = false; public void sequential() { System.out.print("Deret angka : "); //perulangan untuk kondisi i = 0 dan i < panjang array s, for (int i = 0; i < s.length; i++) { //menampilkan input dialog untuk mengisi deret angka berapa saja yang ingin ditampilkan //mengkonversi kunci yang bertipe string ke integer agar sama dengan nilai array s[i] = Integer.parseInt(JOptionPane.showInputDialog("Masukkan " + s.length + " angka," + " angka ke-" + (i + 1))); System.out.print(s[i] + " "); } System.out.println(); //menginputkan angka yang ingin dicari dan mengkonversi kunci yang bertipe string ke integer x = Integer.parseInt(JOptionPane.showInputDialog("Angka yang dicari")); System.out.println("Angka yang dicari : " + x); System.out.println("------------------------------------"); //perulangan untuk kondisi i = 0 dan i < panjang array s for (int i = 0; i < s.length; i++) { //jika x atau variable yang dicari = index array yang sudah diinputkan maka nilai boolean 'found' adalah true //kemudian di break untuk menghentikan if (x == s[i]) { found = true; break; } } //kondisi jika nilai boolean 'found' true, maka mencetak statement ditemukan if (found == true) { System.out.println("Angka " + x + " ditemukan"); //selain itu maka statement tidak ditemukan } else { System.out.println("Angka " + x + " tidak ditemukan"); } } public static void main(String[] args) { //untuk menampilkan pada interface hasil dari method sequential SeqSearch search = new SeqSearch(); search.sequential(); } }
2. Binary search
- Pencarian data dimulai dari pertengahan data yang telah terurut.
- Jika kunci pencarian lebih kecil daripada kunci posisi tengah, maka kurangi lingkup pencarian pada separuh data pertama.
- Begitu juga sebaliknya jika kunci pencarian lebih besar daripada kunci tengah, maka pencarian ke separuh data kedua.
- Teknik Binary Search hanya dapat digunakan pada sorted array.
import javax.swing.JOptionPane;//import yang berfungsi untuk memanggil JOptionPane public class BinSearch { int n = 5, cari, atas, bawah, tengah;//deklarasi variable n,cari,atas,bawah,tengah int a[] = new int[n];//deklarasi array boolean found;//deklarasi nilai boolean public void binary() { System.out.print("Deret angkanya : "); for (int i = 0; i < a.length; i++) {//perulangan untuk kondisi i = 0 dan i < panjang array a, //mengkonversi tipe data string ke integer //menampilkan input dialog untuk memasukkan angka yang berurutan yang nanti di cari a[i] = Integer.parseInt(JOptionPane.showInputDialog("Masukkan " + n + " angka 'BERURUTAN' ke-" + (i + 1))); System.out.print(a[i] + " "); } System.out.println(); //menampilkan input dialog untuk memasukkan angka yang yang akan dicari //harus di konversi dulu dari string ke dalam tipe data integer cari = Integer.parseInt(JOptionPane.showInputDialog("Angka yang dicari")); System.out.println("Angka Yang Dicari: " + cari); System.out.println("--------------------------------------"); //menginisialisasikan batas atas yaitu 0,batas bawah n-1,dan found yang bernilai false atas = 0; bawah = n - 1; found = false; //perulangnan untuk mendeklarasikan algoritma, while ((atas <= bawah) && (found==false)){ tengah = (atas + bawah) / 2; if (a[tengah] < cari) { atas = tengah + 1; //jika index array tengah sama dengan angka yang dicari } else if (a[tengah] == cari) { //maka menampilkan bahwa angka ditemukan System.out.println("Angka " + cari + " ditemukan di index " + tengah); break; } else { bawah = tengah - 1; } tengah = (atas + bawah) / 2; } if (atas > bawah) {//jika nilai atas lebih dari nilai yang bawah System.out.println("Angka " + cari + " tidak ditemukan"); } } public static void main(String[] args) { //untuk menampilkan pada interface hasil dari method sequential BinSearch search = new BinSearch(); search.binary(); } }Selesai sudah postingan kali ini tentang konsep sequential dan binary search pada bahasa pemrograman java. Semoga bermanfaat, dan semoga mendapatkan nilai yang bagus dengan tugas minggu ini, hehe.. Pesan dari saya“ Impossible Is Nothing ”
NIM : 1000631038
NAMA : PRIYO SIGIT PURNOMO
JURUSAN : MANAJEMEN INFORMATIKA
UNIVERSITAS MUHAMMADIYAH JEMBER