Pertemuan 1
“Modul 1 – Searching Array”
Disusun oleh :
Nama : Ardiah Pramesty Cahyani
Nim : 2055301016
Dosen : Maksum Ro’is Adin Saf, S.Kom., M.Eng.
Ail : Uun Patrio, S.S.T.
1. Searching
Searching adalah proses pencarian data dengan menelusuri tempat pencarian data tersebut.
Ada beberapa metode pencarian yang akan dipelajari pada praktikum ini, yaitu :
• Sequential Search
• Sequential Search dengan Sentinel
• Binary Search
• Interpolation Search
import javax.swing.JOptionPane;
int j = Integer.parseInt(JOptionPane.showInputDialog("Masukkan
Angka Yang Dicari : "));
for (int i = 0; i < a.length; i++) {
if (j == a[i]) {
flag = 1;
break;
} else {
flag = 0;
}
}
if (flag == 1) {
System.out.println("Data yang dicari : " + j + " ada ");
} else {
System.out.println("Data yang dicari : " + j + " tidak ada ");
}
}
}
• Screenshot Output
- Jika data yang ingin dicari terdapat didalam array maka akan menampilkan
output seperti pada gambar berikut.
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
Tugas 1.1
Buatlah program untuk mencari sebuah data pada sebuah array berdimensi satu dengan
metode sequential search(data tidak terurut, dan jumlah elemen beserta data
elemennya merupakan inputan user).
Jawab:
• Program tugas 1.1
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
if (flag == 1) {
System.out.println("Data yang dicari : " + cari);
System.out.println("Data Ada!");
} else {
System.out.println("Data yang dicari : " + cari);
System.out.println("Data Tidak Ada!");
}
}
}
• Screenshot ouput
- Jika data yang ingin dicari terdapat didalam array maka akan menampilkan
output seperti pada gambar berikut.
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
1.2 Sequential Search Dengan Sentinel
Teknik ini pada dasarnya hampir sama dengan sequential search, akan tetapi
ditambahkan sebuah indeks array yang belum bernilai (tanpa data) yang digunakan sebagai
penanda (sentinel). Sentinel ini berfungsi untuk menjaga agar indeks data berada pada indeks
ke (n-1) saja. Jika pencarian data sudah sampai pada indeks ke –n, maka artinya data yang
dicari TIDAK ADA (tidak ketemu), sedangkan jika pencarian tidak mencapai indeks ke-n,
maka data yang dicari ADA (ketemu).
Program 1.2
• Syntax program 1.2
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
while (j != a[flag]) {
flag++;
}
if (flag < (a.length - 1)) {
System.out.println("Data yang dicari : " + j + " ada ");
} else {
System.out.println("Data yang dicari: " + j + " tidak ada ");
}
}
}
• Screenshot output
- Jika data yang ingin dicari terdapat didalam array maka akan menampilkan
output seperti pada gambar berikut.
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
Tugas 1.2
Buatlah program untuk mencari sebuah data pada sebuah array berdimensi satu dengan
metode sequential search (data tidak terurut, dan jumlah elemen beserta data elemennya
merupakan inputan user).
Jawab :
• Program tugas 1.2
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
• Screenshot output
- Jika data yang ingin dicari terdapat didalam array maka akan menampilkan
output seperti pada gambar berikut.
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
1.3 Binary Search
Binary Search adalah teknik pencarian data dengan cara membagi data menjadi dua
bagian setiap kali terjadi proses pengurutan. Data yang ada harus diurutkan terlebih dahulu
berdasarkan urutan tertentu yang dijadikan kunci pengurutan.
Algoritma pencarian data dengan teknik binary search adalah sebagai berikut :
• Data ada dalam keadaan terurut
• Mengambil data dari posisi 1 hingga posisi terakhir N
• Mencari posisi tengah (pt) dari data dengan menggunakan rumus :
Pt = (posisi awal + posisi akhir) / 2
• Membandingkan data yang dicari dengan data yang berada pada posisi tengah,
apakah lebih kecil, sama atau malah lebih besar.
• Jika lebih kecil, maka posisi akhir (N) adalah posisi tengah -1 atau N=(pt-1)
• Jika lebih besar, maka posisi awal (pa) adalah posisi tengah + 1 atau pa=(pt+1)
• Jika data yang dicari sama dengan data yang berada pada posisi tengah, maka data
tersebut ADA (ketemu)
Program 1.3
• Syntax program 1.3
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
int nt = 0;
int flag = 0;
int cari;
cari = Integer.parseInt(JOptionPane.showInputDialog("Masukkan
angka yang dicari: "));
akhir = c.length - 1;
while (awal < akhir && flag == 0) {
nt = Math.abs((awal + akhir) / 2);
if (c[nt] == cari) {
flag = 1;
} else if (cari < c[nt]) {
akhir = nt - 1;
} else {
awal = nt + 1;
}
}
if (flag == 1) {
JOptionPane.showMessageDialog(null, "Data ditemukan !!");
} else {
JOptionPane.showMessageDialog(null, "Data tidak ditemukan
!!");
}
System.exit(0);
}
}
• Screenshot output
- Jika data yang ingin dicari terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
• Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
Tugas 1.3
Buatlah program untuk mencari sebuah data pada sebuah array berdimensi satu
dengan metode binary search (asumsikan data sudah terurut, dan jumlah elemen
beserta data elemennya merupakan inputan user)!
Jawab :
• Program tugas 1.3
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
int cari =
Integer.parseInt(JOptionPane.showInputDialog("I
nputkan data yang akan dicari!"));
akhir = data.length - 1;
while (awal <= akhir && flag == 0) {
nt = Math.abs((awal + akhir) / 2);
if (data[nt] == cari) {
flag = 1;
} else if (cari < data[nt]) {
akhir = nt - 1;
} else {
awal = nt + 1;
}
}
if (flag == 1) {
JOptionPane.showMessageDialog(null, "Data ditemukan!");
} else {
JOptionPane.showMessageDialog(null, "Data tidak
ditemukan!");
System.exit(0);
}
}
}
• Screenshot output
- Jika data yang ingin dicari terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
1.4 Interpolation Search
Interpolation search adalah suatu teknik pencarian pada data\yang telah terurut
berdasarkan kunci tertentu. Teknik dari pencarian ini dilakukan dengan perkiraan data.
Contohnya adalah ketika mencari arti kata yang berawalan N pada kamus, maka kita akan
mencarinya pada 1/2 atau 1/3 halaman pertama pada kamus. Jadi kita mencari data secara
relatif terhadap jumlah data. Rumus untuk mencari posisi relatif adalah sebagai berikut :
𝒌𝒖𝒏𝒄𝒊−𝒅𝒂𝒕𝒂 [𝒍𝒐𝒘]
Posisi = 𝒅𝒂𝒕𝒂 [𝒉𝒊𝒈𝒉]−𝒅𝒂𝒕𝒂 [𝒍𝒐𝒘] x (high – low) + low
Contoh :
Misalkan ada sekumpulan data yang telah terurut :
2,4,6,36,38,40,42,45, 60
Data yang akan dicari pada data tersebut diatas adalah 40, maka proses pencarian adalah
sebagai berikut :
Low = 0
High = 8
Data [low]= Data[0] =2
Data [High]=Data[8] = 60
Posisi = (40-4) / (60-4) * (8-0) + 0 = 5
Data [5] = 40, maka Data Ada
Program 1.4
• Syntax program 1.4
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
cari = Integer.parseInt(JOptionPane.showInputDialog("Masukkan
angka yang dicari: "));
posisi = search(cari, a.length);
if (posisi == -1) {
JOptionPane.showMessageDialog(null, "Data tidak ditemukan
!!");
} else {
JOptionPane.showMessageDialog(null, "Data ditemukan !!");
}
}
do {
nt = (int) ((b - a[awal]) / (a[akhir] - a[awal]) * (akhir - awal) +
awal);
if (a[nt] == b) {
return nt;
} else if (b < a[nt]) {
akhir = nt - 1;
} else {
awal = nt = 1;
}
} while (b > a[awal] && b <= a[akhir]);
return -1;
}
}
• Screenshot output
- Jika data yang ingin dicari terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
- Jika data yang ingin dicari terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.
Tugas 1.4
Buatlah program untuk mencari sebuah data pada sebuah array berdimensi satu dengan
metode interpolation search (asumsikan data sudah terurut, dan jumlah elemen beserta
data elemennya merupakan inputan user)!
Jawab :
• Program tugas 1.4
package Pertemuan1_PSDA;
import javax.swing.JOptionPane;
int posisi;
int cari;
cari = Integer.parseInt(JOptionPane.showInputDialog("Masukkan
angka yang dicari: "));
posisi = search(cari, a.length);
if (posisi == -1) {
JOptionPane.showMessageDialog(null, "Data tidak ditemukan !!");
} else {
JOptionPane.showMessageDialog(null, "Data ditemukan !!");
}
- Jika data yang ingin dicari tidak terdapat didalam array maka akan
menampilkan output seperti pada gambar berikut.