• Tidak ada hasil yang ditemukan

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

N/A
N/A
Protected

Academic year: 2021

Membagikan "SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1"

Copied!
9
0
0

Teks penuh

(1)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 1

SEARCHING

Pencarian data (searching) yang sering juga disebut dengan table look-up

atau storage and retrieval information, adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat mungkin.

Pencarian data dari sekumpulan data bisa hanya sekedar untuk ditampilkan atau untuk diolah lebih lanjut. Sehingga dengan demikian dalam model di dunia komputer perlu juga diperkenalkan algoritma pencarian. Ada banyak metode pencarian, antara lain pencarian berurutan, pencarian berindex, tetapi metode pencarian yang paling cepat adalah pencarian biner/binarysearch.

Algoritma pencarian (searching algorithm) adalah algoritma yang menerima argumen X (sebagai kunci), dan dengan langkah-langkah tertentu akan mencari rekaman yang kuncinya bernilai X. Algoritma tersebut bisa menemukan

rekaman secara utuh atau hanya memperoleh pionter yang menunjuk ke rekaman yang dimaksud.

Pada pencarian data, nilai akhir (result) setelah melakukan aksi pencarian adalah :

 False, bila data yang dicari tidak ada.  True, bila data yang dicari diketemukan.

Berdasar nilai akhir ini maka dapat kita ambil aksi lain seperti INSERT bila belum ada, atau Delete bila data ada. Pencarian yang berhasil menemukan rekaman yang dimaksud sering dimaksud dengan retrieval. Jika pencarian tidak berhasil menemukan data yang dicari, maka perlu menambahkan data tersebut ke dalam berkas yang sudah ada, dikenal dengan algoritma pencarian dan penyisipan (search and insertion algorithm).

Searching dapat dilakukan dengan dua cara, yaitu : 1. Sequential Search

2. Binary Search

(2)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 2

1.

Sequential Search

Sequential search (pencarian berurut) adalah metode yang paling sederhana dari sejumlah metode pencarian.

Dari serangkaian data yang ada, data yang dicari dibandingkan satu dengan yang lain sampai data ditemukan atau tidak. Pada saat data yang dicari sudah ketemu, maka proses pencarian langsung dihentikan. Tetapi jika belum ketemu, maka pencarian diteruskan sampai seluruh data dibandingkan. Maksimal pencarian adalah sebanyak N buah data.

Pencarian data secara sequential dilakukan dengan dua cara, yaitu :

 Untuk Vektor yang belum urut

 Untuk Vektor yang sudah terurut.

Yang membedakan kedua cara tersebut adalah pada kondisi yang harus dipenuhi selama proses pencarian.

Vektor belum terurut

Sebelum dilakukan proses pencarian, data masih acak (belum terurut naik). Proses pencarian dilakukan selama :

- Data belum ditemukan  ketemu ← False.

- Index Vektor belum melampaui jumlah data (n)  i <= n.

Langkah-langkah pencarian data sequensial (untuk data belum urut) : (0). Baca vektor yang diketahui, misal vektor A dengan N elemen (1). Baca elemen yang aka dicari, misalkan Data.

(2). (Inisialisasi). Tentukan : Ada = False

(3). (Proses pencarian). Untuk I = 1 sampai N kerjakan langkah 4. (4). Test apakah data = A[i]?

Jika ya (data ketemu), tentukan ada = true, posisi = i dan i = N. (5). (Menambah data pada vektor, jika diperlukan).

(3)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 3 1. Test apakah Ada = False ?

2. Jika ya (data tidak ketemu), tentukan N = N +1 dan A[i] = Data.

(6). Selesai

Dari langkah-langkah tersebut diatas, diperoleh algoritma

Sequential Search (untuk data belum terurut) : Input(n) For i ← 1 to n do Input (A[I]) End For Input (x) Ketemu ← F i ← 1

while (ketemu ← F) and (i < n) do if A[i]=x then ketemu ← T

posisi ← i else i ← i + 1

end if end while

if ketemu ← F then status ← “Data Tidak Ada” output (status)

else status ← “Data Diketemukan” output (Status, Posisi) end if

Vektor sudah terurut

Proses pencarian pada vektor yang telah diurutkan adalah dimulai dari elemen pertama pada vektor dilakukan perbandingan dengan elemen yang dicari. Jika elemen dalam vektor masih lebih kecil dari elemen yang dicari, pencarian diteruskan. Jika sudah lebih besar, pencarian diihentikan dan bisa dipastikan bahwa elemen yang dicari memang tidak diketemukan.

Jika elemen yang dicari tidak diketemukan dan dan ingin menyisipkan elemen tersebut pada posisinya yang tepat, maka seringkali

(4)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 4 diperlukan adanya penggeseran terhadap elemen-elemen yang nantinya akan terletak pada subkrip yang lebih besar dari elemen yang dicari.

Dengan demikian, sebelum dilakukan proses pencarian, data sudah terurut naik. Proses pencarian dilakukan selama :

- Data belum ditemukan  ketemu ← False.

- Index Vektor belum melampaui jumlah data (n)  i <= n. - Data pada Vektor ke-i <= data yang dicari  A[i] <= x.

Langkah-langkah pencarian secara sequensial (untuk data urut) :

0. Baca vektor yang diketahui, misalan vektor A dengan N elemen. Kemudian urutkan vektor tersebut secara naik.

1. (Inisialisasi). Tentukan : Ada = false, I = 1 dan J = 0.

2. Kerjakan langkah 3 dan langkah 5 sampai I = N atau Ada = True. 3. Test apakah A[I] = data ? Jika tidak, kerjakan langkah 4.

Jika ya, tentukan posisi = 1, Ada = True dan melompat ke langkah 5 (pencarian berhasil).

4. Test apakah A[I] > data ?

Jika ya, tentukan J = I dan I = N – 1 (pencarian tidak berhasil). 5. Tentukan I = I + 1.

6. (Menyisipkan elemen baru jika diperlukan).

Test apakah Ada = false ? Jika tidak, melompat ke langkah 10. Jika ya, kerjakan langkah 7.

7. (Mencari posisi untuk menyisipkan elemen). Test apakah J = 0 ? Jika ya, tentukan A[N+1] = Data (elemen baru menempati subkrip terakhir) dan melompat ke langkah 10.

Jika tidak, kerjakan langkah 8. 8. (Menggeser elemen).

Dimulai dari I = N sampai J dengan pertambahan –1, tentukan A[I+1] = a[I]. Kemudian tentukan A[J] = Data.

9. Tentukan N = N+1. 10. Selesai.

(5)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 5 Dari langkah-langhkah tersebut diatas, diperoleh algoritma

Sequential Search (untuk data sudah terurut) : Input(n) For i ← 1 to n do Input (A[i]) End For Input (x) Ketemu ← F i ← 1

while (ketemu ← F) and (i<n) and (A[i]<=x) do if A[i]=x then ketemu ← T

posisi ← i else i ← i + 1

end if end while

if ketemu ← F then status ← “Data Tidak Ada” output (status)

else status ← “Data Diketemukan” output (Status, Posisi) end if

Pada metode pencarian berurutan (sequential), dapat ditentukan banyaknya perbandingan yang perlu dilakukan. Jika tidak ada penambahan atau penghapusan elemen, berarti akan melakukan pencarian pada tabel berukuran tetap, yaitu N, maka banyaknya perbandingan tergantung dari letak elemen yang dicari.

Jika elemen yang dicari terletak pada elemen pertama, berarti perbandingan cukup dilakukan sekali. Sebaliknya jika elemen yang dicari terletak pada elemen terakhir, maka perlu melakukan perbandingan sebanyak N kali. Secara singkat, untuk pencarian yang berhasi rata-rata memerlukan perbandingan sebanyak (N+1)/2 kail, dan pencarian yang tidak berhasil memerlukan N kali perbandingan.

(6)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 6

2. Binary_Search

Digunakan untuk membuat program yang dapat mencari elemen suatu vektor dengan pencarian biner. Vektor yang diketahui harus diurutkan terlebih dahulu secara urut naik. Masukan berupa elemen yang akan dicari, yaitu data. Keluaran berupa data yang bertipe boolean yang menunjukkan ada tidaknya data yang dicari.

Metode binary search jauh lebih cepat dari metode sequential search. Setelah vektor yang diketahui diurutkan, vektor tersebut dibagi dua sub vektor yang mempunyai jumlah elemen yang sama. Kemudian data dibandingkan dengan dengan data terakhir dari sub vektor pertama. Jika data yang dicari lebih kecil, pencarian diteruskan pada sub vektor pertama dengan membagi terlebih dahulu sub vektor tersebut.

Tetapi jika data yang dicari lebih besar dari data terakhir pada sub vektor pertama, berarti data yang dicari kemungkinan terletak pada sub vektor yang kedua. Dengan demikian pencarian dilakukan pada sub vektor kedua.

Proses-proses tersebut diatas dilakukan berulang-ulang sampai data yang dicari diketemukan atau tidak.

Sebagai contoh, dimisalkan akan dicari data 20 pada vektor berikut : 2 8 11 15 18 19 20 22 35 40 42

bawah tengah atas

Vektor tersebut dipecah menjadi dua subvektor sebagai berikut : 2 8 11 15 18 19 20 22 35 40 42

subvektor 1 subvektor 2

Dari hasil pemecahan vektor tersebut diatas, dapat dilihat bahwa data yang bernilai 20 terdapat pada subvektor 1. dengan demikian, pencarian akan dilakukan pada subvektor 2, subvektor 1 tidak perlu dihiraukan lagi. Subvektor 2 kemudian dipecah menjadi :

19 20 22 35 40 42 subvektor 1 subvektor 2

(7)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 7 Sekarang, data yang bernilai 20 terdapat pada subvektor lagi. Dengan demikian subvektor 1 dipecah menjadi 2 subvektor lagi. Proses diteruskan sampai data yang dicari ketemu atau tidak ketemu.

Dari contoh di atas, maka langkah-langkah dalam pencarian Biner : (0). Baca vektor yang diketahui, misalnya berupa vektor A dengan N buah

elemen, dan urutkan secara urut naik. (1). Baca elemen yang aka dicari, misalkan Data (2). (Inisialisasi)

Tentukan : Ada = false, Atas = N dan Bawah = 1. (3). Kerjakan langkah 4 dan 5 selama Atas >= Bawah. (4). (Menentukan batas subvektor).

Tentukan : Tengah = (Atas + Bawah) div 2. (5). Test nilai Kode terhadap A[Tengah].

Jika Kode > A[Tengah], (Ada di subvektor 2), tentukan : Bawah = Tengah + 1.

Jika Kode < A[Tengah], (Ada di subvektor 1), tentukan : Atas = Tengah – 1.

Jika Kode = A, (ketemu),

tentukan : Ada = True, Posisi = Tengah, dan

Bawah = Atas + 1. (6). Selesai.

Secara umum, dalam pencarian biner, harus menentukan elemen tengah dari Vektor.

 Jika data yang dicari = elemen tengah, maka data ketemu.

 Jika data yang dicari < elemen tengah, maka pencarian data dilakukan pada setengah Vektor I.

 Jika data yang dicari > elemen tengah, maka pencarian data dilakukan pada setengah Vektor II.

(8)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 8 Data yang diinputkan harus sudah terurut naik. Jika belum terurut, maka sebelum proses pencarian dilakukan, perlu ditambahkan proses pengurutan data naik.

Algoritma Pencarian Biner (Binary Search) : For I ← 1 to n Do Input (A[I]) End for tengah ← (n+1) div 2 e_tengah ← A(Tengah) Input (x) Ketemu ← F

If x = e_tengah Then ketemu ← T Posisi ← tengah Else if x < e_tengah then

I ← 1

While (ketemu ← F) and (i<tengah) and (A[i]<=x) Do

If A[i] = x then ketemu ← T Posisi ← i

Else I ← i+1 End if

End while Else I ← t+1

While (ketemu ← F) and (i<n) and (A[i]<=x) Do If A[i] = x then ketemu ← T

Posisi ← i Else I ← i+1 End if End while End if If ketemu ← T then

status ← “Data diketemukan dalam Vektor” output (status, posisi)

else

status ← “Data tidak diketemukan” output status

(9)

Pusat Pengembangan Pendidikan – Universitas Gadjah Mada 9

DAFTAR PUSTAKA

- http://mastris.net/kuliah/praktalgoritma/unit4.html.

- Santosa, Insap, 1992, Struktur Data Menggunakan Turbo Pascal 6.0, Yogyakarta : Andi Offset.

Referensi

Dokumen terkait

Seluruh jumlah yang diakui sebelumnya dalam penghasilan komprehensif lain yang terkait dengan entitas anak yang dicatat seolah-olah Perusahaan telah melepaskan secara

Tujuan proposal judul ini adalah untuk menggali, menganalisa dan merumuskan hal-hal yang berhubungan dengan pusat seni rupa kontemporer untuk anak-anak. Hal tersebut

dilihat pada Tabel 4.2 bahwa ekstrak lengkuas konsentrasi 10% berpengaruh terhadap penurunan jumlah bakteri ikan patin, angka kuman diperoleh hasil 2,01 x 10 3 koloni/g

Berdasarkan hasil analisis ditemukan bahwa ukuran perusahaan memiliki pengaruh signifikan dengan arah positif terhadap struktur modal, sedangkan struktur aktiva dan

mengajarkan suri tauladan yang berguna bagi kehidupan manusia. Maka dari saat itu sampai saat sekarang tradisi memperingati hari kematian Syech Abdul Rahman selalu

Bobot basah dan kering tanaman tidak dipengaruhi oleh penggenangan, sedangkan ratio tajuk-akar lebih keeil bila tanaman digenangi dibandingkan dengan

Untuk staff akademik dan SIAA di Fakultas Teknik, teknik industri masih kurang 1 tenaga kerja, sedangkan yang lainnya sudah sesuai antara perhitunngan WISN

Sebagai hasil dari kegiatan ini, para peserta memperoleh pemahaman mengenai pentingnya bertutur kata dengan baik dan santun saat berinteraksi dengan anak didik