Pencarian Rekaman pada Berkas Oleh : Choerun Asnawi, S. Kom.
Konsep Awal Berkas Berkas (file) adalah : koleksi dari rekaman-rekaman (record) yang sama Rekaman (record) adalah : koleksi berbagai nilai medan data (field) yang saling terkait Medan Data (field) adalah : nilai dasar yang membentuk suatu rekaman
Konsep Berkas vs Database Teori Database Implementasi RDBMS Konsep Sistem Berkas Entitas Tabel (Table) File (Berkas) Atribut Kolom (Column) Field (Medan Data) Tuple Baris (Row) Record (Rekaman)
Pencarian Rekaman Pencarian Sekuensial (Sequential Search) Melakukan pencarian dari rekaman pertama secara berurut sampai ditemukan atau mencapai rekaman terakhir Keuntungan : dapat dilakukan untuk kondisi data apapun, baik terurut maupun tidak, numerik maupun tidak Kekurangan : Tidak efektif
Algoritma Pencarian Sekuensial Mulai Indeks 1 while Indeks <= n if Kunci(Cari) = Kunci(Indeks) Hasil Indeks goto 11 end if Indeks Indeks + 1 end while Hasil tidak ketemu Selesai
Pencarian Rekaman Pencarian Biner (Binary Search) Melakukan pencarian dengan membagi medan pencarian menjadi dua bagian yang seimbang Keuntungan : jauh lebih efektif daripada sequential search Kekurangan : hanya dapat dilakukan pada rekaman-rekaman yang telah terurut berdasarkan kunci yang dicari
Algoritma Pencarian Biner Mulai Awal 1 Akhir n while Awal <= Akhir Tengah (Awal + Akhir) / 2 if Kunci(Cari) = Kunci(Tengah) Hasil Tengah goto 15 else if Kunci(Cari) > Kunci(Tengah) Awal Tengah + 1 else Akhir Tengah - 1 end if end while Hasil tidak ketemu Selesai
Pencarian Rekaman Pencarian Interpolasi Melakukan pencarian dengan membagi medan pencarian menjadi dua bagian yang tidak seimbang, namun diestimasi berdasarkan kunci yang dicari Keuntungan : jauh lebih efektif daripada sequential maupun binary search Kekurangan : hanya dapat dilakukan pada rekaman-rekaman yang telah terurut berdasarkan kunci yang dicari dan kuncinya harus bertipe data numerik
Algoritma Pencarian Interpolasi Mulai Awal 1 Akhir n while Awal < Akhir Rasio (Kunci(Cari) – Kunci(Awal)) / (Kunci(Akhir) – Kunci(Awal)) Berikut Awal + Rasio * (Akhir – Awal) if Kunci(Cari) = Kunci(Berikut) Hasil Berikut goto 16 else if Kunci(Cari) > Kunci(Berikut) Awal Berikut + 1 else Akhir Berikut - 1 end if end while Hasil tidak ketemu Selesai