Searching C++
Searching adalah mencari data yang dibutuhkan, dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memory komputer, Terdapat 2 Metode dalam pencarian data yaitu Sequential dan Binary Search
Sequential Search
Sequential Search merupakan metode pencarian data dalam array dengan cara membandingkan data yang dicari dengan data yang ada di dalam array secara berurutan. Pencarian data dengan Metode Sequ
ential Search efektif untuk mencari data yang dalam posisi yang tidak terurut atau acak.
Proses Pencarian dengan metode sequensial :
1. Menentukan data yang dicari
2. Membaca data array satu per satu secara sekuensial
3. Mulai dari data pertama sampai dengan data terakhir, kemudian data yang dicari tadi dibandingkan dengan masing-masing data yang ada di dalam array.
a. Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah temukan.
b. Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa data telah temukan.
Kelebihan Sequential Searching bisa dikatakan lebih mudah dalam implementasinya dalam pemrograman, Kekurangannya jika data yang terdapat dalam suatu array itu sangat banyak, maka akan diperlukan waktu yang lebih lama untuk membandingkan data yang dicari dengan jumlah data yang sangat banyak dalam suatu array.
Contoh Program :
#include <iostream> //file header input output stream
using namespace std; //menggunakan namespace std
int main(void){ //fungsi utama yang akan dijalankan
char data[12] = {'a','j','i','k','a','m','a','l','u','d','i','n'}; //deklarasi data array char
char cariin; //deklarasi cariin type data character
bool got = false; //deklarasi got type data boolean
int i,get,jum = 12; //deklarasi i get dan jumlah data 12 (jum)
cout<<"PENCARIAN SEQUENTIAL\n"; //mencetak di layar Pencarian sequential
cout<<"====================\n"; //mencetak di laya =====
cout<<"\nData : \t"; //mencetak di layar data
for(i=0;i<jum;i++){ //melakukan perulangan sebanyak jum
cout<<"\'"<<data[i]<<"\' "; //mencetak data di laya
}
cout<<endl; //membuat baris baru
cout<<"\nData yang anda ingin cari : "; //mencetak di layar keterangan
cin>>cariin; //input data yang dicari
for(i=0;i<jum;i++){ //perulangan sebanyak jum
if(cariin == data[i]){
//mencari kecocokan data dari carrin dengan carrin
got = true; //jika data sama maka got menjadi true
get = i; //menyimpan data yang di temukan di get
}
}
if(!got){ //jika got bernilai salah
cout<<"data tidak ada"; //mencetak data tidak ada
}else{ //selain itu
cout<<"data \""<<cariin<<"\" berada di index ke - ";
//mencetak data yang dicari
for(i=0;i<jum;i++){ //perulangan sebanyak jum
if(cariin == data[i]){
//mencari kecocokan data dari carrin dengan carrin
cout<<i<<" "; //mencetak data jika ditemukan
}
}
}
return 0; //mengembalikan nilai 0 dari program
}
Hasil Program Diatas :
Binary Search
Metode pencarian Binary yaitu mencari data dengan melakukan mengelompokkan array menjadi bagian-bagian. Binary Search ini hanya dapat diimplementasikan pada data yang telah terurut baik ascending maupun descending dalam suatu array.
Proses Pencarian dengan metode binary search :
Pertama buat perulangan lalu menentukan posisi low yaitu posisi yang menandakan index paling rendah kemudian menentukan posisi high. Kemudian mencari posisi mid = (high + low)/2, Lalu membandingkan data yang dicari dengan nilai yang ada di posisi mid,
1. Jika data yang dicari sama dengan nilai yang ada di posisi mid berarti data ditemukan.
2. Jika data yang dicari lebih kecil dari nilai yang ada di posisi mid maka pencarian data akan dilakukan dibagian kiri mid dengan melakukan pembandingan. dengan kondisi posisi high berubah yaitu (mid - 1) dan posisi low tetap.
3. Jika data yang dicari lebih besar dari nilai yang ada mid maka pencarian data akan dilakukan di bagian kanan dari mid dengan posisi low yang berubah yaitu (mid + 1) dan posisi high tetap.
Kelebihannya yaitu tidak perlu membandingkan data yang dicari dengan seluruh data array yang ada, cukup melalui titik tengah kemudian kita bisa menentukan ke mana selanjutnya mencari data yang ingin dicari.
Kekurangan implementasi agak sedikit lebih rumit karena tidak bisa digunakan pada data array yang masih acak. Jadi harus melakukan sorting terlebih dahulu dalam implementasinya.
Contoh Program :
#include <iostream> //file header input output stream
using namespace std; //menggunakan namespace std
int main(void){ //fungsi utama yang akan dijalankan
char cariin,temp,data[12] = {'a','j','i','k','a','m','a','l','u','d','i','n'}; //deklarasi data array char
int i,j,low,higt,mid,jum = 12; //deklarasi i,j,low,higt dan jumlah data 12 (jum)
bool got = false; //deklarasi got type data boolean
cout<<"PENCARIAN BINARI\n"; //mencetak di Keterangan layar
cout<<"====================\n"; //mencetak di Keterangan layar
cout<<"\nData : \t"; //mencetak di Keterangan layar
for(i=0;i<jum;i++){ //perulangan untuk mencetak data ke layar
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
cout<<"\nMasukan Data yang dicari : "; //mencetak di Keterangan layar
cin>>cariin; //memasukan data yang ingin dicari input
for(i=0;i<jum;i++){ //menggunakan perulangan untuk melakukan sorting
for(j=0;j<jum-i-1;j++){
if(data[j] > data [j+1]){
temp = data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
cout<<endl;
cout<<"Data Di Sorting : "; //mencetak ke layar data yang telah disorting
for(i=0;i<jum;i++){ //mencetak ke layar data yang telah di sorting
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
low = 0; //menggunakan
higt = (jum - 1); //metode
while(low<=higt){ //binary untuk rumus searching
mid = (low + higt)/2; //dengan perulangan
if(cariin == data[mid]){
got = true;
break;
}else if(cariin < data[mid]){
higt = mid - 1;
}else{
low = mid + 1;
}
}
cout<<endl;
if(!got){ //mencetak data jika ditemukan
cout<<"Data tidak ditemukan";
}else{
cout<<"Data '"<< cariin <<"' ditemukan index ke : "<<mid ;
}
return 0;
}
Hasil Program Diatas :
Source Code & Program - Contoh Kasus
Source Code :
#include <iostream> //File header input output stream
using namespace std; //menggukan namespace std dari iostrem
char cariin,temp,data[100]; //deklarasi carrin,temp,data type char
int i,j,low,higt,mid,jum,get; //deklarasi i,j,low,higt,mid,jum,get
bool got = false; //deklarasi got dengan boolean false
void cari_binari(){ //deklarasi dan fungsi cari binari
for(i=0;i<jum;i++){ //perulangan sorting data
for(j=0;j<jum-i-1;j++){
if(data[j] > data [j+1]){
temp = data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
cout<<endl;
cout<<"Data Di Sorting : ";
for(i=0;i<jum;i++){ //menampilkan data yang di sorting
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
low = 0;
higt = (jum - 1);
while(low<=higt){ //melakukan pencariian data metode binary
mid = (low + higt)/2;
if(cariin == data[mid]){
got = true;
break;
}else if(cariin < data[mid]){
higt = mid - 1;
}else{
low = mid + 1;
}
}
cout<<endl;
if(!got){ //menampilkan data jika ditemukan
cout<<"Pencarian Binari : Data tidak ditemukan";
}else{
cout<<"Pencarian Binari : Data '"<< cariin <<"' ditemukan index ke : "<<mid ;
}
}
void car_sequntial(){ //deklarasi dan fungsi cari sequential
for(i=0;i<jum;i++){
//melakukan pencariian data dengan perulangan dengan membadingkan data satu persatu
if(cariin == data[i]){
got = true;
get = i;
break;
}
}
cout<<endl;
if(!got){ //menampilkan data jika ditemukan dan jika tidak
cout<<"Pencarian Squential : Data tidak ditemukan";
}else{
cout<<"Pencarian Squential : Data \""<<cariin<<"\" berada di index ke - ";
for(i=0;i<jum;i++){
//melakukan pencariian data dengan perulangan dengan membadingkan data satu persatu dan mencetak nya di laya
if(cariin == data[i]){
cout<<i<<" ";
}
}
}
}
int main(void){ //fungsi utama program yang akan di eksekusi
cout<<"PENCARIAN SEQUTIAL & BINARI\n"; //mencetak tulisan ke layar
cout<<"====================\n\n"; //mencetak tulisan ke layar
cout<<"Masukan Jumlah Data :"; //mencetak tulisan ke layar
cin>>jum; //memasukan input jumlah ke jum
for(i=0;i<jum;i++){ //menginput data dengan perulangan
cout<<"Data huruf ke - "<<(i+1)<<" = ";
cin>>data[i];
}
cout<<"\nData huruf: \t"; //mencetak data dengan perulangan
for(i=0;i<jum;i++){
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
cout<<"\nMasukan Data yang dicari : "; //data yang ingin dicari
cin>>cariin;
car_sequntial(); //memanggil fungsi car_squntial
cout<<endl; //mencetak baris baru
cari_binari(); //memanggil fungsi cari_binari
cout<<endl; //mencetak baris baru
return 0; //mengembalikan nilai 0 ke program
}
Hasil Program Diatas :
Download PDF Kumpulan Laporan Struktur Data disini : https://drive.google.com/drive/folders/0BwweuGyQqkVJV2ZSSUpSZDMzcGM?usp=sharing
ijin download, untuk tambahan referensi
BalasHapusManfaat bangat
BalasHapus