Metode-metode search pada bahasa pemrograman C++


Search
Search merupakan metode pencarian data dengan membandingkan algoritma pencariannya. Tempat pencarian data dapat berupa array dalam memori (pencarian internal), dan bisa juga file pada external storage (penyimpanan eksternal). Metode yang digunakan dalam membandingkannya yaitu metode pencarian data tanpa penempatan data berupa data integer. Metode-metode tersebut berupa; metode pencarian linear (sequential), metode pencarian biner (binary search), dan metode interpolasi (interpolation search). Cara membandingkannya didasarkan pada tingkat kecepatan berupa lamanya waktu yang dibutuhkan dalam menganalisa algoritma untuk masing-masing pencarian (searching).
1.         Sequential (linear search)
Sequential search merupakan metode pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data tidak perlu diurutkan terlebih dahulu. Sequential merupakan metode pencarian yang paling mudah dimana pencariannya dilakukan satu demi satu secara berurutan dengan data yang dicari sampai data ditemukan atau tidak ditemukan. Apablila data sama dengan kunci, maka pencarian dihentikan dan diberikan nilai pengembalian true, dan apabila sampai indeks terakhir data tidak ditemukan maka diberi nilai pengembalian false. Pengurutan indeks dapat dilakukan dari indeks terkecil ke indeks terbesar atau sebaliknya.
Contoh program:

Hasil running:

2.        Binary search
Binary search merupakan salah satu algoritma untuk melakukan pencarian pada array yang sudah terurut. Jika informasi tentang integer dalam array tidak diketahui, maka penggunaan binary search akan menjadi tidak efisien. Diperlukan sorting terlebih dahulu atau dengan menggunakan pencarian linear.metode pencarian binary dilakukan dengan cara membagi dua ruang pencarian untuk setiap tahap pencarian.
Prinsip dari binary search dapat dijelaskan sebagai berikut:
a)      Pertama-tama diambil posisi awal = 0 dan posisi akhir = N – 1, kemudian dicari posisi data tengah = (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data yang di tengah.
b)      Jika lebih kecil dari target, proses akan dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah -1.
c)      Jika lebih besar dari target proses akan dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.
d)      Pencarian akan berhenti ketika sudah menemukan data yang dicari, dapat juga dilakukan pencarian lagi jika diinginkan.
Algoritma pencarian biner dapat dituliskan sebagai berikut:
1)      L 0
2)      R N – 1
3)      Ditemukan false
4)      Selama (L <= R) dan tidak ditemukan mencari lagi titik tengah hingga data ditemukan
5)      m (L + R) / 2
6)      jika (data[m] = x) maka ditemukan true
7)      jika (x < data[m]) maka R m – 1
8)      jika (x > data[m]) maka R m + 1
jika ditemukan maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan.
Contoh program:

Hasil running:

Komentar