Hayyyy jumpa lagi dengan My Blog. Sedikit sharing masalah Algoritma dan Struktur Data nihh.
Materi yang akan kita bahas adalah tentang Searching. Baca dulu yaa materinya.....
Definisi Searching :
- Searching adalah 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.
- Single Match
Pencarian yang menghasilkan satu dataContoh : mencari mahasiswa dengan nim “120651234”.2.2 . Multiple MatchPencarian yang memungkinkan menghasilkan beberapa dataContoh : mencari mahasiswa dengan ipk >= 3.5
Algoritma Searching
- 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.
Algoritma Sequential Search
1.Input x (data yang dicari)
2.Bandingkan x dengan data ke-i sampai n
3.Jika ada data yang sama dengan x maka cetak pesan “Ada”
4.Jika tidak ada data yang sama dengan x cetak pesan “tidak
ada”
Contoh Penerapan Sourcecode Sequential :
package Elvriska_1200631031_Searching;
public class Sequential {
public static void main(String[] args) {//main method
int A[] = {12, 14, 67, 55, 65, 77};//merupakan data array yang dimasukan
int Cari = 67;//nilai yang dicari
int N =6;//merupakan jumlah data maximal yang kita masukan dalam array
boolean ketemu = false;//llogika untuk nilai benar atau salah
System.out.println("Deret Array Adalah: ");
for (int i = 0; i < A.length; i++) {
//perulangan untuk menampilkan array
System.out.print(A[i] + " ");
//menampilkan Deret Array adalah, yaitu dengan menampilkan
//data-data yang ada dalam array, dan dengan menggunakan
//perulangan for.
}
System.out.println("");
for (int i = 0; i < N; i++) {
if (Cari == A[i]){
//perulangan dengan for dengan nilai i = 0, dan nilai i
//kurang dari sama dengan jumlah array
//dan jika nilai yang kita cari sama dengan ada di dalam Array
System.out.println("Data ditemukan pada index nomor: " + i);
//maka Data akan ditemukan dan berada pada index yang telah ditemukan
ketemu = true;
//nilai yang ditemukan apabila ketemmu maka hasilnya benar
break;//untuk beristirahat setelah nilai yang dicari ketemu
//dan akan melanjutkan lagi
}
}
if (ketemu == false){
System.out.println("Data tidak ditemukan ");
//jika data yang ditemukan salah, maka
//akan ditampilkan data tidak ditemukan
}
System.out.println("\n");
System.out.println("Sequential Search");
//\n untuk mengatur spasi data, dan menampilkan Sequential Search
}
}
public class Sequential {
public static void main(String[] args) {//main method
int A[] = {12, 14, 67, 55, 65, 77};//merupakan data array yang dimasukan
int Cari = 67;//nilai yang dicari
int N =6;//merupakan jumlah data maximal yang kita masukan dalam array
boolean ketemu = false;//llogika untuk nilai benar atau salah
System.out.println("Deret Array Adalah: ");
for (int i = 0; i < A.length; i++) {
//perulangan untuk menampilkan array
System.out.print(A[i] + " ");
//menampilkan Deret Array adalah, yaitu dengan menampilkan
//data-data yang ada dalam array, dan dengan menggunakan
//perulangan for.
}
System.out.println("");
for (int i = 0; i < N; i++) {
if (Cari == A[i]){
//perulangan dengan for dengan nilai i = 0, dan nilai i
//kurang dari sama dengan jumlah array
//dan jika nilai yang kita cari sama dengan ada di dalam Array
System.out.println("Data ditemukan pada index nomor: " + i);
//maka Data akan ditemukan dan berada pada index yang telah ditemukan
ketemu = true;
//nilai yang ditemukan apabila ketemmu maka hasilnya benar
break;//untuk beristirahat setelah nilai yang dicari ketemu
//dan akan melanjutkan lagi
}
}
if (ketemu == false){
System.out.println("Data tidak ditemukan ");
//jika data yang ditemukan salah, maka
//akan ditampilkan data tidak ditemukan
}
System.out.println("\n");
System.out.println("Sequential Search");
//\n untuk mengatur spasi data, dan menampilkan Sequential Search
}
}
Output :
Keterangan : Pada sequential ini digunakan untuk mencari nilai yang ada pada array maka dengan menggunakan perulangan for. Apabila nilai index kurang dari jumlah array, maka nilai yang kita cari sama dengan ada pada nilai array index, jika benar maka akan ditampilkan data ditemukan pada index nomor. Dan jika nilai yang ditemukan salah, maka yang akan ditampilkan adalah Data tidak ditemukan.
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.
Algoritma Binary Search
Penerapan Sourcecode Binary Search
package Elvriska_CobaSearch_1200631031;
public class Binary_Search {
public static void main(String[] args) {
//merupakan sebuah metod utama
int N = 8;
//merupakan konstruktor N dengan jumlah data yang maximam
int A[] = {50, 18, 21, 48, 12, 25, 30, 24};
//untuk memasukan data-data dengan tipe data integer
int Cari,BatasAtas, BatasBawah;
//merupakan untuk identitas logika
boolean ketemu;
//untuk menyatakan suatu kondisi nilai yang menyatakan benar atau salah
Cari= 48;
//untuk mencari nilai yang diinginkan
BatasAtas = 0;
BatasBawah = N - 1;
//menyatakan batasan bawah pada suatu indeks
//dengan nilai N - 1, artinya jumlah data dikurangi 1
ketemu = false;
int Tengah =0;
//nilai inisialisasi Tengah dengan nilai 0
while ((BatasAtas <= BatasBawah) && (!ketemu)){
//untuk logika ketika nilai BatasAtas kurang dari sama dengan BatasBawah
//dan tidak ketemu
Tengah = (BatasAtas + BatasBawah) / 2;
//nilai tengah = nilai batasatas ditambah nilai batasbawah lalu didiv 2
if (A[Tengah] == Cari) {
ketemu = true;
//maka lagika if indeks A tengah akan dicari
//apabila ketemu maka hasilnya benar
} else if (A[Tengah] < Cari) {
BatasAtas = Tengah + 1;
//dan logika if else, jika indeks A tengah kurang dari nilai yg diCari
//maka nilai BatasAtas samadengan nilai tengah ditambah 1
} else {
BatasBawah = Tengah - 1;
//apabila salah, nilai BatasBawah samadengan nilai tengah dikurangi 1
}
}
if (ketemu) {
System.out.println("Data ditemukan pada index nomor "+ Tengah);
//jika nilai yang dicari ketemu maka akan ditampilkan hasil
//Data berada pada index nomor yang telah ditemukan
} else {
System.out.println("Data tidak ditemukan ");
//jika salah atau nilai yang dicari tidak ditemukan
//maka akan ditampilkan Data tidak ditemukan
} }
}
public class Binary_Search {
public static void main(String[] args) {
//merupakan sebuah metod utama
int N = 8;
//merupakan konstruktor N dengan jumlah data yang maximam
int A[] = {50, 18, 21, 48, 12, 25, 30, 24};
//untuk memasukan data-data dengan tipe data integer
int Cari,BatasAtas, BatasBawah;
//merupakan untuk identitas logika
boolean ketemu;
//untuk menyatakan suatu kondisi nilai yang menyatakan benar atau salah
Cari= 48;
//untuk mencari nilai yang diinginkan
BatasAtas = 0;
BatasBawah = N - 1;
//menyatakan batasan bawah pada suatu indeks
//dengan nilai N - 1, artinya jumlah data dikurangi 1
ketemu = false;
int Tengah =0;
//nilai inisialisasi Tengah dengan nilai 0
while ((BatasAtas <= BatasBawah) && (!ketemu)){
//untuk logika ketika nilai BatasAtas kurang dari sama dengan BatasBawah
//dan tidak ketemu
Tengah = (BatasAtas + BatasBawah) / 2;
//nilai tengah = nilai batasatas ditambah nilai batasbawah lalu didiv 2
if (A[Tengah] == Cari) {
ketemu = true;
//maka lagika if indeks A tengah akan dicari
//apabila ketemu maka hasilnya benar
} else if (A[Tengah] < Cari) {
BatasAtas = Tengah + 1;
//dan logika if else, jika indeks A tengah kurang dari nilai yg diCari
//maka nilai BatasAtas samadengan nilai tengah ditambah 1
} else {
BatasBawah = Tengah - 1;
//apabila salah, nilai BatasBawah samadengan nilai tengah dikurangi 1
}
}
if (ketemu) {
System.out.println("Data ditemukan pada index nomor "+ Tengah);
//jika nilai yang dicari ketemu maka akan ditampilkan hasil
//Data berada pada index nomor yang telah ditemukan
} else {
System.out.println("Data tidak ditemukan ");
//jika salah atau nilai yang dicari tidak ditemukan
//maka akan ditampilkan Data tidak ditemukan
} }
}
Output :
Keterangan :
Pada Algoritma Binary Search proses berjalannya suatu logika
algoritma dilakukan dengan cara: yang pertama dengan menginputkan array dengan tipe integer, lalu menentukan logika-logikanya, masukan algoritma perhitungannya. proses perhitungan yang dilakukan yaitu, ketika kita memasukkan nilai yang akan kita cari, lalu ketika nilai Batasatas bernilai kurang dari samadengan nilai batasbawah dan tidak ketemu, maka logika akan melakukan proses perhitungan dengan cara mencari nilai tengah, dengan nilai batasatas ditambah dengan nilai batasbawah lalu didiv dengan nilai 2, maka nilainya merupakan index nilai tengah. jika index nilai tengah samadengan nilai yang akan kita cari, maka akan ketemu dan bernilai benar. dan akan bernilai salah, apabila nilai index nilai tengah kurang dari nilai yang akan kita cari. lalu mencari nilai batas atas dengan cara menambahkan nilai tengah dengan 1, dan akan bernilah. Mencari nilai batas bawah dengan cara mengurangi nilai tengah dengan 1. Pada proses akhirakn menjalankan logika dengan. apabila bernilai benar, maka akan ditampilkan Data yang kita cari berada pada index keberpa, dan apabila bernilai salah maka akan ditampilkan Data yang kita cari tidak ada.
algoritma dilakukan dengan cara: yang pertama dengan menginputkan array dengan tipe integer, lalu menentukan logika-logikanya, masukan algoritma perhitungannya. proses perhitungan yang dilakukan yaitu, ketika kita memasukkan nilai yang akan kita cari, lalu ketika nilai Batasatas bernilai kurang dari samadengan nilai batasbawah dan tidak ketemu, maka logika akan melakukan proses perhitungan dengan cara mencari nilai tengah, dengan nilai batasatas ditambah dengan nilai batasbawah lalu didiv dengan nilai 2, maka nilainya merupakan index nilai tengah. jika index nilai tengah samadengan nilai yang akan kita cari, maka akan ketemu dan bernilai benar. dan akan bernilai salah, apabila nilai index nilai tengah kurang dari nilai yang akan kita cari. lalu mencari nilai batas atas dengan cara menambahkan nilai tengah dengan 1, dan akan bernilah. Mencari nilai batas bawah dengan cara mengurangi nilai tengah dengan 1. Pada proses akhirakn menjalankan logika dengan. apabila bernilai benar, maka akan ditampilkan Data yang kita cari berada pada index keberpa, dan apabila bernilai salah maka akan ditampilkan Data yang kita cari tidak ada.
Nama : Elvriska Ayu Widiyanti
NIM : 1200631031
Kelas : A
Tidak ada komentar:
Posting Komentar