Searching dengan Algoritma Binary pada Bahasa C++ [TI Politala Alpro 2C]
Pada pembahasan sebelumnya telah dibahas tentang searching dengan metode sequential, dimana data dicari dengan cara dicek satu persatu. Dalam binary search data yang dicari akan secara berurutan sesuai banyak data yang telah tersusun.
Berikut adalah penjelasan tentang bunary search :
BINARY SEARCH
Kalau metode binary searching ini, berbeda dengan metode sequential search. Perbedaanya pun sangat terlihat, dimana apabila sequential search tanpa melalui proses yang rumit termasuk dapat mencari data secara acak. Berbeda dengan metode binary search, dimana metode ini data harus terurut dengan baik secara ascending ataupun descending yang terdapat pada array. Jadi, metode binary search membutuhkan metode sorting.
Tetapi, pada tutorial kali ini admin tidak akan memberikan metode sorting terlebih dahulu. Karena, metode sorting akan kita bahas di artikel selanjutnya jadi sekarang untuk datanya akan kita urutkan secara manual dan secara statik. Adapun dibawah ini algoritma atau cara kerja binary search dalam menemukan data.
Langkah pertama melakukan perulangan dan selanjutnya menentukan posisi terendah yaitu posisi yang dapat menandakan bahwa index tersebut paling rendah. Selanjutnya, menentukan posisi tertinggi dari index array. Apabila sudah maka mencari posisi paling tengah dengan algo seperti ini tengah = (posisiTertinggi + posisiTerendah)/2.
Selanjutnya, membandingkan value yang dicari dengan value yang ada di tengah.
Apabila value atau data yang dicari sesuai dengan value atau data array yang berada di tengah, maka proses selesai.
Apabila value atau data yang dicari lebih kecil dari data yang berada di tengah, maka pencarian akan dilanjutkan elemen pada sisi kiri dari array yang berada di tengah. Dengan kondisi posisi tertinggi berubah menjadi posisiTengah - 1 dan posisiTerendah tetap tidak berubah.
Apabila value atau data yang dicari lebih besar dari data yang berada di tengah array. Maka, pencarian akan dilanjutkan pada sisi kanan dari elemen array yang berada di tengah. Dengan kondisi posisi tertinggi tetap dan posisi terendah berubah menjadi posisiTengah + 1.
Source Code :
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int n, i;
int data[10], x, tengah;
cout<<"Masukkan banyak data : "; cin>>n;
for(i=0; i<n; i++)
{
cout<<"Data ke-"<<i+1<<" : "; cin>>data[i];
}
cout<<"Data yang dicari : "; cin>>x;
int awal=0, akhir=n-1;
do
{
tengah=(awal+akhir)/2;
if(x<data[tengah])
akhir=tengah-1;
else
awal=tengah+1;
}
while((akhir>=awal)&&(data[tengah!=x]));
if(data[tengah]==x)
cout<<"Data "<<x<<" Pada Posisi "<<tengah+1;
getche();
return 0;
}
Untuk mencoba hasil running syntax diatas, dapat mencoba compiler online dibawah ini :
Source Code :
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int n, i;
int data[10], x, tengah;
cout<<"Masukkan banyak data : "; cin>>n;
for(i=0; i<n; i++)
{
cout<<"Data ke-"<<i+1<<" : "; cin>>data[i];
}
cout<<"Data yang dicari : "; cin>>x;
int awal=0, akhir=n-1;
do
{
tengah=(awal+akhir)/2;
if(x<data[tengah])
akhir=tengah-1;
else
awal=tengah+1;
}
while((akhir>=awal)&&(data[tengah!=x]));
if(data[tengah]==x)
cout<<"Data "<<x<<" Pada Posisi "<<tengah+1;
getche();
return 0;
}
Untuk mencoba hasil running syntax diatas, dapat mencoba compiler online dibawah ini :
0 Komentar