loading...
Pencarian Dengan Binary Search bahasa C
Hello Mina-san ! Semoga semuanya sehat walafiat,pada kesempatan kali ini kita akan mengulas tengtang Metode pencarian Biner atau Binary kita sudah tahu sebelumnya tentang Sequential Search yang dapat diandalkan untuk data yang sedikit sedangkan untuk data yang banyak lebih diandalkan untuk memakai Binary Search,Simak pembelajaran dibawah ini ya !Baca juga Pencarian Sequential
Metode Biner atau Binary ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, maka langsung data tengah dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir =j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.
Langkah-langkah untuk metode pencarian bagi dua.
1. Asumsikan data terurut secara horizontal dari indeks 0 samapi n-1, untuk menggunkan istilah kanan dan kiri.
2. Misalkan kumpulan data yang berjumlah n adalah larik L, dan data yang akan dicari adalah X.
3. Tentukan nilai indeks awal i=0 dan indeks akhir j = n-1.
4. Tentukan apakah data terurut menurun atau meniak dengan menggunakan membandingkan apakah elemen paling kiri L[0] lebih dari atau kurang dari eleemn paling kanan L[n-1].
5. Asumsikan bahwa data terurut menaik (tergantung hasil nomor 3).
6. Misalkan variabel k adalah indeks paling tengah, diperoleh dengan rumus :
8. Jika nomor 7 tidak terpenuhi, periksa jika L[k]<X, maka pencarian berikutnya dilakukan di sisi kanan indeks k, lakukan proses seperti pada nomor 6, dimana nilai indeks I sekarang sama dengan nilai indeks sebelumnya.
9. Jika nomor 8 tidak terpenuhi, maka tidak pasti nilai Lk]>X, maka pencarian berikutnya dilakukan di sisi kiri indeks k, lakukan proses seperti pada nomor 6, dimana nilai indeks j sekarang sama dengan nilai indeks k sebelumnya.
10. Jika data terurut menurun, maka tukar kondisi yang ada di nomor 8 dan 9.
Contoh :
Diberikan 10 data terurut L[10] = {12,14,15,17,23,25,45,67,68,70}. Cari nilai X = 14 di elemen tersebut.
Solusi :
1. Menentukan apakah data terurut menaik atau menurun.
Contoh Program Binary Search :
Hello Mina-san ! Semoga semuanya sehat walafiat,pada kesempatan kali ini kita akan mengulas tengtang Metode pencarian Biner atau Binary kita sudah tahu sebelumnya tentang Sequential Search yang dapat diandalkan untuk data yang sedikit sedangkan untuk data yang banyak lebih diandalkan untuk memakai Binary Search,Simak pembelajaran dibawah ini ya !Baca juga Pencarian Sequential
Metode Biner atau Binary ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data yang berada pada elemen paling tengah bernilai sama, maka langsung data tengah dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir =j, dimana nilai j, pada awalnya bernilai sama dengan jumlah elemen.
Langkah-langkah untuk metode pencarian bagi dua.
1. Asumsikan data terurut secara horizontal dari indeks 0 samapi n-1, untuk menggunkan istilah kanan dan kiri.
2. Misalkan kumpulan data yang berjumlah n adalah larik L, dan data yang akan dicari adalah X.
3. Tentukan nilai indeks awal i=0 dan indeks akhir j = n-1.
4. Tentukan apakah data terurut menurun atau meniak dengan menggunakan membandingkan apakah elemen paling kiri L[0] lebih dari atau kurang dari eleemn paling kanan L[n-1].
- Jika data di elemen paling kiri L[0] > data di elemen paling kanan L[n-1], maka data terurut menurun.
- Jika data elemen paling kiri L[0] < data di elemen paling kanan L[n-1], maka data terurut menaik.
5. Asumsikan bahwa data terurut menaik (tergantung hasil nomor 3).
6. Misalkan variabel k adalah indeks paling tengah, diperoleh dengan rumus :
K = (I + j) div 27. Periksa, jika L[k] = x, maka data dicari langsung ketemu di elemen k.
8. Jika nomor 7 tidak terpenuhi, periksa jika L[k]<X, maka pencarian berikutnya dilakukan di sisi kanan indeks k, lakukan proses seperti pada nomor 6, dimana nilai indeks I sekarang sama dengan nilai indeks sebelumnya.
I=kDan seterusnya sampai nilai X dicari ketemu atau tidak sama sekali.
K=(i+j)div2
9. Jika nomor 8 tidak terpenuhi, maka tidak pasti nilai Lk]>X, maka pencarian berikutnya dilakukan di sisi kiri indeks k, lakukan proses seperti pada nomor 6, dimana nilai indeks j sekarang sama dengan nilai indeks k sebelumnya.
J=kDan seterusnya sampai nilai X dicari ketemu atu tidak sama sekali.
K=(i+j)div2
10. Jika data terurut menurun, maka tukar kondisi yang ada di nomor 8 dan 9.
Contoh :
Diberikan 10 data terurut L[10] = {12,14,15,17,23,25,45,67,68,70}. Cari nilai X = 14 di elemen tersebut.
Solusi :
1. Menentukan apakah data terurut menaik atau menurun.
L[0] = 122. Misal indeks paling kiri adlah I = 0 dan indeks paling kanan adalah j = 9, maka indeks tengahnya adalah :
L[9] = 70
Karena L[0] < L[9], maka data tersebut terurut menaik.
K = (i+j) div 23. Karena data di indeks tengah lebih dari nilai data yang dicari (L[4] > X), maka pencarian berikutnya dilakukan pada sisi kiri indeks k, maka nilai j sekarang sama dengan k, lalu lakukan proses sama seperti nomor 2.
= (0+9) div 2
= 4.
Elemen tengah sekarang adalah 4 dengan L[4] = 23.
J=k4. Karena data di indeks tengah lebih dari nilai data yang dicari (L[2] >X), maka pencarian berikutnya dilakukan pada sisi kiri indeks k, maka nilai j sekarang sama dengan k, lalu lakukan proses sama seperti nomor 2.
= 4
K= (i+j) div 2
= (0 +4) div 2
= 2
Elemen tengah sekarang adalah 2 dengan L[2] = 15.
J=k5. Karena nilai data di elemen tengah sama dengan nilai data yang dicari X, maka pencarian berakhir. Data X ditemukan di iNdeks ke-1.
= 2
K = (i+j) div 2
= (0 +2) dic 2
= 1
Elemen tengah sekarang adlah 1 dengan L[1} = 14
Contoh Program Binary Search :
#include <iostream> #include <conio.h> #include <stdio.h> #define MAX 100 using namespace std; int data[MAX]; int n; void input() { system("cls"); cout<<"Banyaknya Data : "; cin>>n; if(MAX>n) { for(int i=0;i<n;i++) { cout<<"Data ke- "<<i+1<<" : "; cin>>data[i]; } } else { cout<<"Data Terlalu Banyak !!"; cout<<endl; for(int i=0;i<160;i++) { cout<<"*"; } cout<<endl; system("pause"); input(); } } void urut() { for(int i=0;i<n;i++) { int x=data[i]; int j=i-1; while(j>=0 && data[j]>x) { data[j+1]=data[j]; j--; } data[j+1]=x; } } void cari() { int tengah,cari,awal,akhir,hasil; awal=0; akhir=n-1; hasil=0; cout<<"Data yang ingin dicari : "; cin>>cari; while(awal<=akhir && hasil==0) { tengah=(awal+akhir)/2; if(data[tengah]==cari) { hasil=1; } else if(data[tengah]<cari) { awal=tengah+1; } else { akhir=tengah-1; } } if(hasil==1) { cout<<"Data yang anda cari : "<<cari<<" ditemukan "; } else { cout<<"Data tidak ditemukan "; } } int main() { input(); urut(); cari(); getch(); }output
Sekian dan inilah yang mungkin dapat saya sampaikan untuk Pencarian Dengan Binary Search bahasa C.Jika ada pertanyaan sampaikan dikolom komentar.Semoga dapat membantu dan bermanfaat.
ConversionConversion EmoticonEmoticon