Kali ini saya akan posting
penggabungan antara selection sort dan binary search sebelum masuk kescript
alangkah baiknya kita mempelajari apa itu selection sort dan apa itu binary
search.
Selection sort adalah salah satu
metode pengurutan dimana data dibandingakan satu persatu sampai data terurutkan
secara kecil kebesar atau besar kekecil, contoh ada data 27, 16, 44, 10 maka
data akan diurukan seperti gambar dibawah ini, saya beri contoh ascending /
kecil kebesar :
step pertama data 27 dan 16
dibandingkan apakah data 27 lebih kecil atau lebih besar dari 16 jika lebih
besar maka data akan digeser seperti gambar dibawah :
jika angka lebih kecil maka data
tidak digeser :
angka 10 adalah angka terkecil
maka data diurukan lagi mulai dari step pertama dengan mengabaikan angka 10 :
Binary search adalah salah satu
metode pencarian dimana data harus sudah urut (kecil kebesar atau besar ke
kecil) dan data nanti akan dibagi menjadi 3 bagian yaitu low, mid, dan high
contoh ada data 1, 2, 3, 4, 5 dan kita akan mencari bilangan 5. maka data
dibagi menjadi 3 yaitu 1 dan 2 adalah low, 3 adalah mid, 4 dan 5 adalah
high, seperti gambar dibawah ini
lalu angka yang dicari yaitu
angka 5 dia termasuk kedalam high maka low dicoret seperti gambar dibawah
maka low berada diangka 3 mid
diangka 4 dan high diangka 5, karena low sebelumnya tadi sudah dicoret seperti
gambar dibawah
maka pencarian pun selesai karena
data 5 telah ditemukan
dibawah
ini adalah penggabungan antara selection sort dan bubleserch copy paste boleh
tapi juga dipelajari ya
#include <conio.h>
#include <iostream>
#include <iomanip>
using namespace std;
void selection_sort( int data[])
{
int temp;
for(int i=0;
i<10;i++){
for(int j = i+1; j<10; j++)
{
if(data[i]>data[j])
{
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
int main()
{
int data[10];
int cari;
cout<<"\t 'BINARY SEARCH'"<<endl;
cout<<"\t====================="<<endl;
cout<<"\nMasukkan 10 Data : ";
for(int x =
0; x<10; x++)
cin>>data[x];
cout<<"\nMasukkan data yang ingin Anda cari : ";
cin>>cari;
cout<<"\nData diurutkan : ";
selection_sort(data);
for(int x =
0; x<10;x++)
cout<<setw(3)<<data[x];
cout<<endl;
int awal,
akhir, tengah, b_flag = 0;
awal = 0;
akhir = 10;
while
(b_flag == 0 && awal<=akhir)
{
tengah = (awal + akhir)/2;
if(data[tengah] == cari)
{
b_flag = 1;
break;
}
else if(data[tengah]<cari)
awal = tengah + 1;
else
akhir = tengah -1;
}
if(b_flag ==
1)
cout<<"\nData ditemukan pada index
ke-"<<tengah<<endl;
else
cout<<"\nData tidak ditemukan\n";
_getche();
return 0;
}
No comments:
Post a Comment