Searching
Searching
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:
akan dilakukan pencarian sebuah record dari kumpulan record berdasarkan sebuah kunci dalam setiap record
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
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
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.
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.
(lokasi, alamat) record secara langsung (immediate, direct) pada waktu dicari
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
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.
menjamin semua nilai hasil penghitungan bersifat unik (tidak timbul collision). Fungsi ini mensyaratkan semua nilai kunci sudah harus diketahui sejak semula.