0% menganggap dokumen ini bermanfaat (0 suara)
144 tayangan12 halaman

8 Algoritma Searching

Dokumen tersebut membahas beberapa teknik pencarian data dalam array dan file, yaitu sequential search, binary search, interpolation search, dan brute force search. Teknik-teknik tersebut mencakup cara pencarian secara urut maupun tidak urut serta perbandingan keuntungan dan kerugian masing-masing metode.

Diunggah oleh

Ifal Falakh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
144 tayangan12 halaman

8 Algoritma Searching

Dokumen tersebut membahas beberapa teknik pencarian data dalam array dan file, yaitu sequential search, binary search, interpolation search, dan brute force search. Teknik-teknik tersebut mencakup cara pencarian secara urut maupun tidak urut serta perbandingan keuntungan dan kerugian masing-masing metode.

Diunggah oleh

Ifal Falakh
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

Searching

Alpro-2
Searching

 Pada suatu data seringkali dibutuhkan


pembacaan kembali informasi (retrieval
information) dengan cara searching
 Searchingpencarian data dengan cara
menelusuri data-data tersebut
 Tempat pencarian data dapat array dalam
memori, bisa juga pada file pada external storage
Sequential Search (1)
 Mrk teknik pencarian data dalam array (1 dimensi ) yang akan
menelusuri semua elemen-elemen array dari awal sampai akhir,
dimana data-data tidak perlu diurutkan terlebih dahulu

 Kemungkinan terbaik (best case)jika data yang dicari terletak


di indeks array terdepan (elemen array pertama) sehingga waktu
yang dibutuhkan untuk pencarian data sangat sebentar (minimal)

 Kemungkinan terburuk (worst case) adalah jika data yang dicari


terletak di indeks array terakhir (elemen array terakhir) sehingga
waktu yang dibutuhkan untuk pencarian data sangat lama
(maksimal)
Sequential Search (2)
 Misalnya terdapat array satu dimensi sebagai berikut:
0 1 2 3 4 5 6 7
indeks

8 10 6 -2 11 7 1 100 value

alamat
21da 21db 21dc 21dd 21de 21df 21e0 21e1

 cari data d/ nilai 6


 if ada muncul pesan “ADA”

 If tidak adamuncul pesan “TIDAK ADA”

int data[8]={…………..}; int cari; int flag=0;


sout (“data yang dicari=…”,cari);
for (int i=0; i<8<i++){
if (data[i]==cari) flag=1; sout (“data ada”);
else sout (“data tidak ada”);
Binary Search
 Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu
urutan tertentu yang dijadikan kunci pencarian
 Mrk teknik pencarian data dengan cara membagi data menjadi dua
bagian setiap kali terjadi proses pencarian
 Prinsip pencarian biner adalah:
 Data diambil dari posisi 1 sampai posisi akhir N
 Kemudian cari posisi data tengah dengan rumus: (posisi awal +
posisi akhir) / 2
 Kemudian data yang dicari dibandingkan dengan data yang di
tengah, apakah sama, lebih kecil/lebih besar?
 Jika lebih besar, maka proses pencarian dicari dengan posisi
awal=posisi tengah + 1
 Jika lebih kecil, maka proses pencarian dicari dengan posisi
akhir=posisi tengah – 1
 Jika data sama, berarti ketemu.
Ilustrasi
Contoh Data:
Misalnya data yang dicari 17
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A B C
Karena 17 > 15 (data tengah), maka awal = tengah + 1

0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A B C
Karena 17 < 23 (data tengah), maka akhir = tengah – 1

0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A=B=C
Karena 17 = 17 (data tengah), maka KETEMU!
Interpolation Search
 Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci
tertentu
 Teknik searching ini dilakukan dengan perkiraan letak data.
 Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku
telepon, misal yang berawalan dengan huruf T, maka kita tidak akan
mencarinya dari awal buku, tapi kita langsung membukanya pada 2/3
atau ¾ dari tebal buku.

 Rumus posisi relatif kunci pencarian dihitung dengan rumus:

kunci  data[low]
Posisi  x(high  low)  low
data[high ]  data[low]

 Jika data[posisi] > data yg dicari, high = pos – 1


 Jika data[posisi] < data yg dicari, low = pos + 1
Kasus
 Misal terdapat data sebagai berikut:
Kode Judul Buku Pengarang

025 The C++ Programming James Wood

034 Mastering Delphi 6 Marcopolo

041 Professional C# Simon Webe

056 Pure JavaScript v2 Michael Bolton

063 Advanced JSP & Servlet David Dunn

072 Calculus Make it Easy Gunner Christian

088 Visual Basic 2005 Express Antonie

096 Artificial Life : Volume 1 Gloria Virginia


Penyelesaian
 Kunci Pencarian ? 088
 Low ? 0 Jika data[posisi] < data yg dicari, low = pos + 1
 High ? 7 Jika data[posisi] > data yg dicari, high = pos – 1
 Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]
 Kunci[6] = kunci pencarian, data ditemukan : Visual Basic 2005

 Kunci Pencarian ? 060


 Low ? 0
 High ? 7
 Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]
 Kunci[3] < kunci pencarian, maka teruskan
 Low = 3 + 1 = 4
 High = 7
 Ternyata Kunci[4] adalah 063 yang lebih besar daripada 060.
 Berarti tidak ada kunci 060.
Algoritma Brute Force Search String

 Cocokkan pattern pada awal teks


 Dari kiri ke kanan dengan mencocokkan karakter
per karakter pattern dengan karakter di teks yang
bersesuaian, sampai salah satu kondisi berikut
dipenuhi:
 Karakter di pattern dan di teks yang dibandingkan tidak
cocok (mismatch)
 Semua karakter di pattern cocok dan memberitahukan
penemuan di posisi ini
 Algoritma kemudian terus menggeser pattern
sebesar satu ke kanan, dan mengulangi langkah
ke-2 sampai pattern berada di ujung teks
Alur
Algoritma
void BruteForceSearch{
input m, n : integer;
input P : array[0..n-1] of char
input T : array[0..m-1] of char
output ketemu : array[0..m-1] of boolean }
Deklarasi variabel
i, j: integer
Algoritma
for (i=0 to m-n)
do j=0
while (j < n && T[i+j] = P[j]) do
j=j+1;
endwhile
if(j >= n) then ketemu[i]=true;
endif
endfor

Anda mungkin juga menyukai