Anda di halaman 1dari 13

[202].

STRUKTUR DATA: PENCARIAN (SEARCHING)

--------------------------------------------------------Author : y3ppy
Contact : y3ppy_neutron@yahoo.com
CopyLEFT (c) 2007 www.spyrozone.net All Rights Reserved
06/06/2007 18:00:02 WIB
---------------------------------------------------------

---< Table Of Contents ------------------------------------------------------------------------------1. Preface


2. Pembahasan
- Pencarian Berurutan (Sequential Searching)
- Pencarian Biner (Binary Search)
3. Penutup
- Kesimpulan
4. Attachment
- searching.cpp
------------------------------------------------------------------------------------------------------

1. Preface
Artikel ini akan memaparkan kepada anda mengenai searching dalam dunia
struktur data. Dua metode yang dibahas dalam artikel ini yaitu Sequential
Searching dan Binary Search. Semoga bermanfaat ;)

2. Pembahasan
Dalam kehidupan sehari-hari sebenarnya kita sering melakukan pencarian data.
Sebagai contoh, jika kita menggunakan Kamus untuk mencari kata-kata dalam
Bahasa Inggris yang belum diketahui terjemahannya dalam Bahasa Indonesia.
Contoh lain saat kita menggunakan buku telepon untuk mencari nomor telepon
teman atau kenalan dan masih banyak contoh yang lain. 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.

Algoritma pencarian (searching algorithm) adalah 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).

Metode pencarian data dapat dilakukan dengan dua cara yaitu pencarian internal
(internal searching) dan pencarian eksternal (external searching). Pada pencarian
internal, semua rekaman yang diketahui berada dalam pengingat komputer
sedangakan pada pencarian eksternal, tidak semua rekaman yang diketahui berada
dalam pengingat komputer, tetapi ada sejumlah rekaman yang tersimpan dalam
penyimpan luar misalnya pita atau cakram magnetis. Selain itu metode pencarian
data juga dapat dikelompokkan menjadi pencarian statis (static searching) dan
pencarian dinamis (dynamic searching). Pada pencarian statis, banyaknya rekaman
yang diketahui dianggap tetap, pada pencarian dinamis, banyaknya rekaman yang
diketahui bisa berubah-ubah yang disebabkan oleh penambahan atau penghapusan
suatu rekaman. 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.

---< Pencarian Berurutan (Sequential Searching)


------------------------------------------

Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian


yang paling sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut :
data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari
sampai data tersebut ditemukan atau tidak ditemukan.

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.

Algoritma pencarian berurutan dapat dituliskan sebagai berikut :


1i0
2 ditemukan false
3 Selama (tidak ditemukan) dan (i <= N) kerjakan baris 4
4 Jika (Data[i] = x) maka ditemukan true, jika tidak i i + 1
5 Jika (ditemukan) maka i adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian
sekuensial.

int SequentialSearch(int x)
{
int i = 0;
bool ditemukan = false;
while ((!ditemukan) && (i < Max))
{
if(Data[i] == x)
ditemukan = true;
else
i++;
}
if(ditemukan)
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.

---< Pencarian Biner (Binary Search)


------------------------------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. Dalam kehidupan sehari-hari, sebenarnya kita juga
sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata
dalam kamus Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mulamula 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.Untuk lebih
jelasnya perhatikan contoh berikut:

Misalnya ingin mencari data 17 pada sekumpulan data berikut :

Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4. Berarti data tengah


adalah data ke-4, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data
tengah ini. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal
dianggap sama dengan posisi tengah + 1 atau 5.

Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7. Berarti data tengah
yang baru adalah data ke-7, yaitu 23. Data yang dicari yaitu 17 dibandingkan
dengan data tenah ini. Karena 17 < 23, berarti proses dilanjukkan tetapi kali ini
posisi akhir dianggap sama dengan posisi tengah 1 atau 6.

Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5. Berarti data tengah
yang baru adalah data ke-5, yaitu 17. data yang dicari dibandingkan dengan data
tengah ini dan ternyata sama. Jadi data ditemukan pada indeks ke-5. Pencarian
biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada
posisi akhir. Jika posisi sudah lebih besar daripada posisi akhir berarti data tidak
ditemukan.

Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas.
Prosesnya hampir sama dengan pencarian data 17. Tetapi setelah posisi awal 5 dan
posisi akhir 6, data tidak ditemukan dan 16 < 17, maka posisi akhir menjadi posisi
tengah 1 atau = 4 sedangkan posisi awal = 5.

Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang
artinya data tidak ditemukan.

Algoritma pencarian biner dapat dituliskan sebagai berikut :

1L0
2RN-1
3 ditemukan false
4 Selama (L <= R) dan (tidak ditemukan) kerjakan baris 5 sampai dengan 8
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 L m + 1
9 Jika (ditemukan) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan.

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

int BinarySearch(int x)
{
int L = 0, R = Max-1, m;
bool ditemukan = false;
while((L <= R) && (!ditemukan))
{
m = (L + R) / 2;
if(Data[m] == x)
ditemukan = true;
else if (x < data[m])
R = m - 1;
else
L = m + 1;
}
if(ditemukan)
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. Jumlah pembandingan maksimum
yang dilakukan dengan pencarian biner dapat dicari menggunakan rumus
logaritma, yaitu : C = 2log(N)

3. Penutup
---<Kesimpulan

1. Algoritma pencarian berurutan digunakan untuk mencari data pada sekumpulan


data atau rekaman yang masih acak

2. Algoritma pencarian biner digunakan untuk mencari data pada sekumpulan data
atau rekaman yang sudah dalam keadaan terurut.

4. Attachment
Berikut ialah contoh implementasi dalam bentuk program dari metode-metode
searching yang telah dibahas:

UNIVERSITAS KANJURUHAN MALANG


2015

BAB I
PENDAHULUAN
1.

Latar Belakang

Pada pembuatan makalah kali ini kami akan membahas tentang Pencarian (Searching), dengan metode
Sequential Searching. Sequential Search (pencarian beruntun) menggunakan prinsip sebagai berikut,
data yang ada di bandingkan satu persatu secara berurutan dengan yang dicari sampai data tersebut
ditemukan atau tidak di temukan.
Pencarian (searching) merupakan proses yang sering digunakan dalam pengelolaan data. Proses
pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik
bertipe dasar atau bertipe bentukan). Data dapat disimpan secara temporer dalam memori utama atau
disimpan secara permanen di dalam memori sekunder (tape atau disk). Didalam memori utama ,
struktur penyimpanan data yang umum adalah brupa larik atau tabel (array), sedangkan di dalam
memori sekunder berupa arsip (file). Algoritma pencarian yang akan dibicarakan dimulai dengan
algoritma pencarian yang paling sederhana yaitu pencarian beruntun atau Sequential Search.
1.

Tujuan

Mahasiswa dapat memahami salah satu metode algoritma pencarian


2.
Mahasiswa dapat membuat algoritma dan program dalam bahasa pascal dengan metode-metode
Searching.
1.

BAB II
PEMBAHASAN

Pengertian
Pencarian (searching) merupakan proses yang sering digunakan dalam pengelolaan data. Proses
pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik
bertipe dasar atau bertipe bentukan). Search algoritma adalah algoritma yang menerima argument A
dan mencoba untuk mencari record yang mana keynya adalah A.
Algoritma bisa mengembalikan nilai record, atau pointer ke record. Reord sendiri adalah tipe data yang
terdiri atas kumpulan variabel disebut field. Sequential search (penelusuran sequensial) yaitu proses
mengunjungi melalui suatu pohon dengan cara setiap simpul di kunjungi hanya satu kali yang disebut
dengan tree transversal / kunjungan pohon.
Data dapat disimpan secara temporer dalam memori utama atau disimpan secara permanen di dalam
memori sekunder (tape atau disk). Di dalam memori utama, struktur penyimpanan data yang umum
adalah berupa larik atau tabel (array), sedangkan di dalam memori sekunder berupa aesip (file).
Aktivitas yang berkaitan dengan pengolahan data ini sering di dahului dengan proses pencarian.
Sebagai contoh, untuk mengubah (update) data tertentu, langkah pertama yang harus dilakukan adalah
mencari keberadaan data tersebut di dalam kumpulannya. Aktivitas yang awal sama juga dilakukan
pada proses penambahan (insert) data yang baru. Proses penambahan data dimulai dengan mencari
apakah data yang ditambahkan sudah terdapat di dalam kumpulan. Jika sudah dan mengasumsikan
tidak boleh ada duplikasi data,maka data tersebut tidak perlu di tambahkan, tetapi jika belum ada,
maka tambahkan.
Algoritma pencarian yang akan dibicarakan 3 cara yaitu
1.
1. Pencarian Berurutan (Sequential Searching).
2.
2. Pencarian Biner (Binary Seacrh).

1. Sequential Shearching
Adalah suatu teknik pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemenelemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Pencarian
berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara
berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan. Algoritma
pencarian secara linear digunakan untuk mencari sebuah nilai pada tabel sembarang. Ada dua macam
cara pencarian pada tabel. Algoritma ini mempunyai dua jenis metode yaitu dengan boolean dan tanpa
boolean. Algoritma pencairan secara linear melakukan pengulangan sebanyak 1 kali untuk kasus
terbaik (value sama dengan elemen pertama dalam tabel) dan Nmax kali untuk kasus terburuk.
Sehingga algoritma ini mempunyai kompleksitas algoritma O(n).
Proses pencarian data dengan metode ini cukup sederhana dan mudah dipahami. Dalam pencarian ini
proses dilakukan dengan cara mencocokan data yang akan dicari dengan semua data yang ada dalam
kelompok data. Proses pencarian data dilakukan dengan cara mencocokan data yang akan dicari
dengan semua data yang ada dalam kelompok data. Proses pencocokan data dilakukan secara berurut
satu demi satu dimulai dari data ke-1 hingga data pada ururtan terakhir. Jika data yang dicari
mempunyai harga yang sama dengan data yang ada dalam kelompok data, berarti data telah
ditemukan. Tetapi jika data yang dicari tidak ada yang cocok dengan data-data dalam sekelompok data,
berarti data tersebut tidak ada dalam sekelompok data.Selanjutnya kita tinggal menampilkan hasil yang
diperoleh tersebut.
1.

Ilustrasi Metode Linier Search :


Misalnya terdapat array satu dimensi sebagai berikut:
0
1
2
3
4
5
8
10
12
6
7
1

6
50

7
100

index
Value

Kemudian program akan meminta data yang akan dicari, misalnya 6 (x = 6).
Iterasi :
6 = 8 (tidak!)
6 = 10 (tidak!)
6 = 6 (Ya!) => output : Ada pada index ke-2
Jika sampai data terakhir tidak ditemukan data yang sama maka output : data yang dicari tidak ada.
Best case : jika data yang dicari terletak di depan sehingga waktu yang dibutuhkan minimal.
Worst case : jika data yang dicari terletak di akhir sehingga waktu yang dibutuhkan maksimal.
Contoh :
DATA = 5 6 9 2 8 1 7 4
bestcase ketika x = 5
worstcase ketika x = 4
*x = key/data yang dicari
Contoh Program dalam Bahasa Pemograman Pascal
program search_aditya;
uses crt;
const
nmin = 1;
nmax = 100;
type
arrint = array [nmin..nmax] of integer;
var
x
: integer;
tabint : arrint;
n,i : integer;
indeks : integer;
function seqsearch1(xx : integer): integer;
var i : integer;
begin
i := 1;
while ((i xx)) do
i:=i+1;
if tabint[i] = xx then
seqsearch1:=i
else
seqsearch1:=0;
end;
begin
clrscr;
write('input banyaknya index array = '); readln(n);
for i:=1 to n do
begin
write('Tabint[',i,'] = '); readln(tabint[i]);
end;
write('Nilai yang dicari = '); readln(x);
indeks:=seqsearch1(x);
if indeks <> 0 then
write(x,' ditemukan pada indeks ke-',indeks)
else

write(x,' tidak ditemukan');


writeln;
readln;
end.
Tanpilan ketika di jalankan sbb :

2. Pencarian Biner (Binary Seacrh).


Binary search adalah algoritma pencarian untuk data yang terurut. Pencarian dilakukan dengan cara
menebak apakah data yang dicari berada ditengah-tengah data, kemudian membandingkan data yang
dicari dengan data yang ada ditengah. Bila data yang ditengah sama dengan data yang dicari, berarti
data ditemukan. Namun, bila data yang ditengah lebih besar dari data yang dicari, maka dapat
dipastikan bahwa data yang dicari kemungkinan berada disebelah kiri dari data tengah dan data
disebelah kanan data tengah dapat diabai.Upper bound dari bagian data kiri yang baru adalah indeks
dari data tengah itu sendiri.Sebaliknya, bila data yang ditengah lebih kecil dari data yang dicari, maka
dapat dipastikan bahwa data yang dicari kemungkinan besar berada disebelah kanan dari data tengah.
Lower bound dari data disebelah kanan dari data tengah adalah indeks dari data tengah itu sendiri
ditambah 1. Demikian seterusnya.
Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan nilai
tertentu dalam sebuah larik (array) linear, dengan menghilangkan setengah data pada setiap langkah,
dipakai secara luas tetapi tidak secara ekslusif dalam ilmu komputer.
Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah pembandingan untuk
menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah
sisanya dengan cara yang sama. Pada intinya, algoritma ini menggunakan prinsip divide and conquer,
dimana sebuah masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian yang
lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu
saja.Algoritma ini bekerja dengan cara memilih record dengan indeks tengah dari tabel dan
membandingkannya dengan record yang hendak dicari. Jika record tersebut lebih rendah atau lebih
tinggi, maka tabel tersebut dibagi dua dan bagian tabel yang bersesuaian akan diproses kembali secara
rekursif.
Penerapan terbanyak dari pencarian biner adalah untuk mencari sebuah nilai tertentu dalam sebuah list
terurut.Jika dibayangkan, pencarian biner dapat dilihat sebagai sebuah permainan tebak-tebakan, kita
menebak sebuah bilangan, atau nomor tempat, dari daftar (list) nilai.
Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list; oleh karena nilai-nilainya
terurut, kita mengetahui apakah nilai terletak sebelum atau sesudah nilai yang di tengah tersebut, dan
pencarian selanjutnya dilakukan terhadap setengah bagian dengan cara yang sama.
Metoda Pencarian Biner ( Binary Search) hanya bisa diterapkan jika data array sudah
terurut.Pengurutan Array bisa menggunakan jenis sorting descending atau asscending.
eKeunggulan
Keunggulan utama dari algoritma binary search adalah kompleksitas algoritmanya yang lebih kecil
daripada kompleksitas algoritma sequential search. Hal ini menyebabkan waktu yang dibutuhkan
algoritma binary search dalam mencari sebuah record dalam sebuah table, lebih kecil daripada waktu
yang dibutuhkan algoritma sequential search.
eKelemahan

Data harus disorting dahulu dan algoritma lebih rumit, tidak baik untuk data berantai.algoritma ini
hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun.
eFungsi
Pencarian Biner (Binary Search) dilakukan untuk :
Memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari
dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang
sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan
data tidak ditemukan).
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan
terurut menaik.
ePrinsip dari pencarian biner dapat dijelaskan sebagai berikut :
Data diambil dari posisi 1 sampai posisi akhir N
Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil,
atau lebih besar?
Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1
Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah 1
Jika data sama, berarti ketemu.
Untuk lebih jelasnya, perhatikan contoh berikut. Misalkan kita ingin mencari 17 pada sekumpulan data
berikut:
1. Mulamula dicari data tengah, dengan rumus (1+ 9) / 2 = 5.
2. Berarti data tengah adalah data ke-5, yaitu 15.
3. Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini.
4. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan posisi
tengah + 1 atau 6.
1. Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7. Berarti data tengah yang baru adalah
data ke-7, yaitu 23.
2. Data yang dicari, yaitu 17 dibandingkan dengan data tengah ini.
3. Karena 17 < 23, berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan posisi
tengah 1 atau 6.
1. Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang baru adalah
data ke-6, yaitu 17.
2. Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan pada
indeks ke-6.
3. Bagaimana jika data yang dicari tidak ada, misalnya 16?
4. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari posisi akhir.
5. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.
Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di atas. Prosesnya hampir sama dengan
pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6, proses masih dilanjutkan lagi dengan posisi
awal = 6 dan posisi akhir = 5
Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak
ditemukan.

2. Algoritma dari Binary search


Algoritma pencarian biner dapat dituliskan sebagai berikut :
1L0
2RN-1
3 ketemu false
4 Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8
5 m (L + R) / 2
83
6 Jika (Data[m] = x) maka ketemu true
7 Jika (x < Data[m]) maka R m 1
8 Jika (x > Data[m]) maka L m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan

Contoh Studi Kasus


Sebuah contoh aksi pencarian biner adalah sebuah permainan tebak-tebakan dimana seorang pemain
harus menebak sebuah bilangan bulat positif yang dipilih oleh pemain lain di antara 1 dan N, dengan
memanfaatkan jawaban pertanyaan berupa ya dan tidak. Misalnya N adalah 16 dan angka yang dipilih
adalah 11, permainan dapat berjalan sebagai berikut:
Apakah angka lebih besar dari 8? (ya)
Apakah angka lebih besar dari 12? (tidak)
Apakah angka lebih besar dari 10? (ya)
Apakah angka lebih besar dari 11? (tidak)
Sehingga, angka tersebut pasti 11.Pada setiap langkah, kita memilih sebuah angka yang tepat berada di
tengah-tengah jangkauan nilai-nilai yang mungkin. Sebagai contoh, saat kita mengetahui angka
tersebut lebih besar dari 8, tetapi lebih kecil atau sama dengan 12, kita mengetahui untuk memilih
angka di tengah-tengah jangkauan [9, 12] (pada kasus ini 10 adalah yang optimal).
Program :
#include <iostream>
#include <conio.h>
int binary_s(int array[], int size, int elemen);
int main()
{
int size=10;
int data[10]={2, 3, 5, 6, 12, 44, 56, 65, 73 ,81} ;
cout<<"Data Array"<<endl;
int i;
for(i=0;i<size;i++)
cout<<data[i]<<" ";
cout<<endl<<endl<<"masukkan data yang ingin anda cari: ";
int cari;
cin>>cari;
// pencarian
int hasil;
hasil = binary_s(data, size, cari);
if (hasil==0)
cout<<"Nilai tidak ditemukan";

else
cout<<"Nilai ditemukan";
getch();
}
int binary_s(int array[], int size, int elemen)
{
int awal = 0;
int akhir = size-1;
int nilaiTengah = (awal+akhir)/2;
while (nilaiTengah<=size && awal<=akhir)
{
nilaiTengah = (awal+akhir)/2;
if (array[nilaiTengah]==elemen)
return 1;
else if (elemen<array[nilaiTengah])
akhir = nilaiTengah-1;
else
awal = nilaiTengah+1;
}
return 0;
}