Kamis, 04 Juni 2015

Searching

Pencarian atau searching pada pemrograman adalah proses mencari sebuah data pada struktur data yang besar sehingga dapat ditemukan dengan efisien. Pencarian biasanya dilakukan di struktur data berupa sebuah matrik atau array yang berisi angka, huruf maupun kalimat. Pencarian data sering juga disebut 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 atau searching termasuk ke dalam metode yang sering dipakai dalam pemrosesan data. Tidak hanya digunakan untuk memperoleh hasil akhir berupa data yang ditemukan, tetapi juga untuk mencari data sebagai syarat agar data yang ditemukan dapat digunakan untuk proses lain, seperti penyisipan, parsing, dan lain-lain. Jadi searching atau pencarian tidak hanya sebaga proses utama, akan tetapi juga sebagai subproses dari proses yang lebih besar.
Algoritma  pencarian  adalah suatu algoritma  yang  menerima sebuah argumen kunci dan dengan   langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut.   Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful).
Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner. Perbedaan dari dua teknik ini terletak pada keadaan data.   Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut.  Sebaliknya, pencarian biner digunakan pada data yang sudah dalam keadaan urut.

1. Pencarian Berurutan (Sequential Searching)
Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling sederhana. Sequential search seperti namanya bekerja secara iterasi dalam mencari data dengan memeriksa tiap data array satu demi satu dari awal hingga akhir. Pada  dasarnya,  pencarian  ini  hanya  melakukan  pengulangan  dari  1  sampai dengan jumlah data.   Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.   Apabila sama, berarti data telah ditemukan.    Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak ada.  Pada kasus yang paling buruk, untuk n elemen data harus dilakukan pencarian sebanyak n kali pula.
Berikut  ini  merupakan fungsi  untuk  mencari  data  menggunakan pencarian sekuensial.

int SequentialSearch(int x)
{
 int i = 0;
 bool ketemu = false;
 while ((!ketemu) && (i < Max)){
 if(Data[i] == x)
  ketemu = true;
 else 
  i++;
 }
 if(ketemu)
  return i;
 else
  return -1;
}

Fungsi diatas akan mengembalikan indeks dari data yang dicari.   Apabila data tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.

2. Pencarian Biner (Binary Search)
Binary search merupakan metode pencarian yang tergolong cepat. Akan tetapi salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam keadaan urut.  Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan.  
Sistem kerja binary search menggunakan prinsip Divide and Conquer yang mirip dengan quicksort, hanya saja diaplikasikan ke dalam pencarian data. Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.   Kemudian data yang dicari dibandingkan dengan data tengah.   Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.  Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.   Demikian seterusnya sampai data tengah sama dengan yang dicari.

Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.

int BinarySearch(int x)
{
 int L = 0, R = Max-1, m;
 bool ketemu = false;
 while((L <= R) && (!ketemu))
 {
  m = (L + R) / 2;
  if(Data[m] == x)
   ketemu = true;
  else if (x < data[m]) R = m - 1;
  else
   L = m + 1;
 }
 if(ketemu)
  return m;
 else
  return -1;
}
Fungsi diatas akan mengembalikan indeks dari data yang dicari.   Apabila data tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila data yang dicari tepat berada di tengah-tengah.

Contoh Program:



Referensi:
  1. Fakhri.2013.Sukses Menuju OSN Komputer SMA Jilid 1 (Edisi Revisi).pelatihan-osn.com

Tidak ada komentar:

Posting Komentar