Langsung ke konten utama
Pencarian Biner (Binary Search)
Pada algoritma pencarian biner, data sudah dalam keadaan terurut (untuk mudahnya diasumsikan urut naik). Contoh dalam kehidupan sehari-hari, seperti orang mencari nomor telepon pada buku telepon. Setiap kali pencarian, kunci akan selalu dibandingkan dengan data yang berada di tengah (middle), bila sama berarti data ketemu, bila tidak, akan “dilihat” apakah data ada di sebelah “kiri” (artinya data lebih kecil dari data di tengah) atau di sebelah “kanan” (artinya data lebih besar dari data di tengah). Bila data ada di sebelah kiri, dilakukan pencarian dengan cara yang sama (sementara data yang berada di sebelah kanan akan diabaikan). Jadi, setiap kali pencarian, data selalu “dibelah” menjadi dua bagian (biner), sampai pada “titik tertentu” (bila sama dengan titik tengah, pencarian tidak dilakukan lagi, bila tidak, sampai pada perbandingan terakhir data juga tidak sama, berarti data tidak ditemukan pada array aray).

Berikut adalah algoritmanya:

function pencarianBiner(input aray : larik; kunci, low, high : integer) : integer
Deklarasi
ketemu : boolean i, middle : integer
Deskripsi
ketemu  false
while (low <= high) and (not ketemu) do middle  (low+high) div 2
if (kunci = aray[middle]) then ketemu  true { data pencarian = data di tengah } else if (kunci < aray[middle]) then high  middle – 1 {data akan dicari lagi di sebelah kiri} else low  middle + 1 {data akan dicari lagi di sebelah kanan} endif
endwhile
if ketemu then pencarianBiner := middle else pencarianBiner := -1;
endif


berikut adalah pemrogramannya
#include <iostream>

using namespace std;

int funcbinary (int data[], int n, int k)
{
 int atas,bawah,tengah,posisi;
 bool ada;

 ada    = false;
 bawah  = 0;
 atas   = n - 1;
 posisi = -1;

 while (bawah <= atas)
 {
  tengah = (atas + bawah) / 2;
  if (k == data[tengah])
  {
   posisi = tengah;
   break;
  }
 else if (k < data[tengah]) atas = tengah - 1;
 else if (k > data[tengah]) bawah= tengah + 1;
 }
 return posisi;
}

int main ()
{
 int kk;
 cout << "INPUT ANGKA : "; cin >> kk;
 int n         = 10;
 int data[] = {21,31,48,52,64,78,87,92,105,170};
 int k      = kk;

 int posisi = funcbinary (data,n,k);

 if (posisi != -1)
 {
  cout << "ANGKA " << k << " ditemukan pada indeks ke-" << posisi << endl;
 }
 else
 {
  cout << "ANGKA " << k << " tidak ditemukan" << endl;
 }
 return 0;
}



Komentar

Postingan populer dari blog ini

KOMPONEN-KOMPONEN KOMPUTER DAN FUNGSINYA Pada kesempatan ini saya akan membahas mengenai komponen-komponen komputer beserta fungsinya. Seperti yang kita ketahui perkembangan ilmu teknologi setiap waktu semakin canggih, dan salah satu hasil dari kecangihan teknologi adalah komputer atau pc. Hampir semua orang sudah tidak asing lagi dengan istilah komputer, bahkan sebagian mereka tidak bisa lepas dari salah satu alat canggih ini, baik karena faktor pekerjaan atau hanya untuk bermain game sebagai hiburan. Di dalam koputer terdapat komponen-komponen komputer, apa saja itu??? Dan apa fungsinya??? Untuk menjawab pertanyaan-pertanyaan   tersebut maka saya akan membahasnya pada kesempatan ini. 1.      motherboard/mainboard Motherboard/mainboard adalah   sebagian dari perangkat keras komputer yang paling utama dan penting. Karena berisi sistem BIOS (Basic Input output System). Fungsi dari motherboardnya sendiri adalah sebagai pusat semua pe...
SEKUEN       S ekuen adalah sederetan pernyataan-pernyataan yang urutan dan pelaksanaan eksekusinya runtut, yang lebih dahulu ditemukan akan dikerjakan terlebih dahulu. Bila urutan pernyataan dibalik, akan mempunyai makna yang berbeda. Dilihat dari cara kerjanya, atau tugas yang dikerjakannya, , ada tiga macam atau tiga kategori pokok komponen instruksi dalam algoritma, yaitu :Assignment Statement, Input / Output Statement, dan Control Statement. yang maish dapat ditambahkan satu macam lagi yaitu Call Statement, dan return Statement. Tapi bila dilihat dari struktur alur atau urutan pelaksanaan instruksi untuk ketiga komponen diatas, bagaimana mereka tersusun atau terangkai menjadi suatu algoritma, atau program sedemikian rupa sehingga akan terbentuk tiga macam struktur flow yaitu : 1. Sequential flow, (aliran yang dikerjakan urut sesuai urutan penulisan ) 2. Branch flow, (aliran yang melakukan pencabangan) – Uncoditional Branch flow, – Conditional Branch flo...