Anda di halaman 1dari 3

JURUSAN TEKNIK INFORMATIKA

UNIVERSITAS SANATA DHARMA

PRAKTIKUM STRUKTUR DATA LINIER

MODUL III
Searching
A. Tujuan praktikum:
a. Mahasiswa mampu memahami algoritma pencarian
b. Mahasiswa mampu membuat program pencarian dengan tipe data sederhana
(primitive)

B. Dasar Teori
Proses searching merupakan suatu proses untuk mengumpulkan sejumlah informasi di dalam
pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat
mungkin. Ada beberapa algoritma pencarian seperti Linear Search/ Sequential Search,
Binary Search, Interpolation Search. Lihat materi kuliah teori (ppt).

Algoritma Sequential search

Algoritma ini digunakan untuk mencari data dengan metode sequential search.
Masukan berupa kumpulan data dalam larik dan data yang dicari.
Keluaran akan menghasilkan indek data yang ditemukan atau mengembalikan nilai -1
kalau tidak ditemukan.
Langkah 0: Baca data ke dalam larik
Langkah 1: Baca data yang dicari ke dalam variabel kunci
Langkah 2: Untuk counter = 0 sampai N-1 lakukan langkah 3
Langkah 3: Test apakah kunci == larik[counter]
Jika ya, kembalikan nilai counter
Langkah 4: Kembalikan nilai -1 untuk menunjukan data tidak ditemukan.

Algoritma Binary search

Algoritma ini digunakan untuk mencari data dengan metode binary search.
Masukan berupa kumpulan data dalam larik yang sudah dalam keadaan urut serta data
yang dicari.
Keluaran akan menghasilkan indek data yang ditemukan atau mengembalikan nilai -1
kalau tidak ditemukan.
Langkah 0: Baca data ke dalam larik dalam keadaan urut, indekAwal diisi indek data
pertama dan indekAkhir diisi indek data terakhir
Langkah 1: Baca data yang dicari ke dalam variabel kunci
Langkah 2: Selama (indekAwal <= indekAkhir) lakukan langkah: 3, 4, 5
Langkah 3: Carilah elemen tengah. Elemen tengah adalah elemen dengan indekTengah =
(indekAwal+indekAkhir) /2.
(Elemen tengah, larik[indekTengah], membagi larik menjadi dua bagian, yaitu
bagian kiri larik[indekAwal .. indekTengah-1] dan bagian kanan
larik[indekTengah+1 .. indekAkhir]).

1
Langkah 4: Test apakah larik[indekTengah] = X.
Jika ya, pencarian dihentikan sebab X sudah ditemukan dan kembalikan nilai
indekTengah.
Jika tidak, lanjutkan ke langkah 5.
Langkah 5: Harus ditentukan apakah pencarian selanjutnya akan dilakukan di larik bagian
kiri atau di bagian kanan. Test larik[indekTengah] > X,
Jika ya pencarian selanjutnya dilakukan di larik bagian kiri, buat
indekAkhir=indekTengah-1.
Jika tidak pencarian selanjutnya dilakukan pada larik bagian kanan, buat
indekAwal=indekTengah+1.
Langkah 6: Kembalikan nilai -1 untuk menunjukkan data tidak ditemukan.

Pencarian interpolasi mencoba memperbaiki pencarian bagi dua atau pencarian biner (binary
search) dengan tidak membagi dua yang hampir sama ukurannya, tetapi dengan
memperkirakan letak data yang dicari.

Mid (tengah) dicari dengan cara interpolasi

mid = low + ((toFind - sortedArray[low]) * (high - low)) /


(sortedArray[high] - sortedArray[low]);
dimana:
mid : indek tengah
low : indek awal
high : indek akhir
toFind : nilai yang dicari
sortedArray : larik yang berisi data yang sudah terurut

Array
Kita dapat mengurutkan data yang ada di dalam array dengan menggunakan method
static sort dari kelas static Arrays milik Java.
Contoh :
int[] a={ 5, 8, 26, 15, 11, 31 };
Arrays.sort(a); // data di array a sudah terurut

C Langkah Praktikum

1. Buatlah program untuk mencetak isi sebuah array bertipe integer (misal data: 5, 8, 26, 15,
11, 31) dengan memanggil method static cetak yang dikemas dalam kelas bernama Larik.
Pergunakan diagram kelas UML di bawah ini.

Larik

+ cetak(int[]) : static void

2
2. Buatlah rancangan diagram kelas UML untuk mengimplementasikan algoritma searching
dibawah ini dalam bentuk method static untuk melengkapi kelas Larik yang sudah pernah
anda buat.
a. Pencarian beruntun (sequential search)
b. Pencarian biner (binary search)
3. Buat juga algoritma method main untuk mencoba kedua algoritma di atas .
4. Catatan: gunakan method Arrays.sort() untuk mengurutkan data array yang digunakan.

C. Tugas
1. Buatlah method static Pencarian interpolasi (interpolation search) dan lengkapi dengan
method mainnya untuk mencoba algoritma ini.
.
.

Anda mungkin juga menyukai