Anda di halaman 1dari 19

SEARCHING

y Untuk memperoleh informasi biasanya dilakukan

dengan pencarian pada sebuah tabel, basis data atau gudang informasi berdasarkan golongan tertentu y Dalam program aplikasi, proses searcing sering kali merupakan kegiatan yang memakan banyak waktu. Oleh karena itu, perbedaan cara penataan recordrecord dan metode searching dapat memberikan perbedaan yang signifikan terhadap kinerja program

y Metode pencarian:

Sequential Search 2. Binary Search 3. Hashing


1.

y Untuk semua algoritma pencarian, diasumsikan

akan dilakukan pencarian sebuah record dari kumpulan record berdasarkan sebuah kunci dalam setiap record

y Procedure pencarian selalu mempunyai dua input,

target dan list tempat record akan dicari. Outputnya adalah variabel boolean untuk menunjukkan ketemu atau tidaknya target dalam list. y Jika record yang dicari dapat ditemukan, maka output berikutnya adalah sepbuat pointer/penunjuk yang menunjukkan lokasi record tersebut

y Deklarasi record untuk pencarian

Type tipeptr =^node; node = record info : recordinfo; next: tipeptr; end; Tipelist = tipeptr; Var list : tipelist;

Sequential Search
y Sequential Search adalah pencarian data secara

linier (garis lurus), artinya adalah pencarian dilakukan secara teratur (secara sekuensial) dari awal sampai akhir data (atau bisa juga dari akhir ke awal data). y Pencarian ini dilakukan pada data yang acak/tidak berurut

y Procedure pencarian Sequential

Procedure sequentialsearch (var L : tipelist; terget : tipekunci; var ketemu : boolean; var ptrlokasi : tipeptr); Begin ketemu := false; lokasi := L while (not ketemu) and (lokasi <> nil) do if L.info^.kunci = terget then ketemu := true else lokasi := lokasi^.next; if not ketemu then lokasi := nil; End;

Binary Search
y Pencarian Biner (Bah.Ingg: Binary Search)

adalah pencarian data secara eliminasi biner berulang/terus-menerus. Maksudnya adalah pada saat pencarian data, 1 kelompok data yang sudah urut dibagi menjadi 2 subkelompok.

y Lalu salah satu subkelompok dieliminasi, sehingga

ruang lingkup pencarian data menjadi lebih sedikit. Kemudian subkelompok yang tersisa dibagi lagi menjadi 2 subkelompok lagi, demikian dilakukan secara berulang-ulang.

type TArrString = array of string; function CariBiner(var Arr: TArrString; Cari: string): LongInt; var Awal, Akhir, Tengah, Ketemu: LongInt; Begin Awal:= Low(Arr); Akhir:= High(Arr); Ketemu:= -1; while (Awal <= Akhir) and (Ketemu = -1) do begin Tengah:= (Awal + Akhir) shr 1; if Arr[Tengah] = Cari then Ketemu:= Tengah else begin if Cari < Arr[Tengah] then Akhir:= Tengah-1 else Awal:= Tengah+1; end; end; CariBiner:= Ketemu; end;

Hash Searching
y Metode ini sangat berbeda dengan dua metode

sebelumnya yang melakukan pencarian operasi pembanding. Pada metode ini kemampuan komputasi aritmatika yang cepat lebih diperlukan.

y Hashing bertujuan untuk mendapatkan posisi

(lokasi, alamat) record secara langsung (immediate, direct) pada waktu dicari

y Struktur data penyimpan record disebut hash table.

Fungsi untuk menentukan posisi record berdasarkan nilai kunci record disebut hashing function. X = hash (kunci)

Suatu hashing function yang baik harus memenuhi dua syarat: 1. penghitungannya cepat 2. menghasilkan nilai yang terdistribusi merata

y Beberapa pendekatan hash function:

1. Digit selection. Hash function ini menentukan nilai hash dengan memilih beberapa angka dari nilai kunci. key = d1d2d3d4d5d6d7d8d9 H(key) = key mod 1000

y 2. Division.

Hash function ini menentukan nilai hash dengan membangi nilai kunci dengan nilai tertentu. H(key) = key mod m = h sehingga 0 h m-1 Penentuan nilai m cukup penting, harus dicari sedekimian rupa sehingga hasil bagi cukup terdistribusi.

y 3. Multiplication.

Perkalian dilakukan dengan bilangan itu sendiri. Karena hasil perkalian membentuk angka yang cukup besar maka lakukan seleksi angka. Misalkan kunci terdiri dari lima angka, hasil perkaliannya membentuk 10 angka.

y Perfect hashing function adalah fungsi hash yang

menjamin semua nilai hasil penghitungan bersifat unik (tidak timbul collision). Fungsi ini mensyaratkan semua nilai kunci sudah harus diketahui sejak semula.

Anda mungkin juga menyukai