AJIBLOG

Menulis Blog Adalah Salah Satu Hobi Saya di Waktu Luang dan Sebagai Catatan Eksperimen Tentang Informasi dan Teknologi , Silahkan Share , Subscribe dan Komen Jika Anda Suka Artikel saya ini, anda juga dapat menuliskan masalah yang anda alami pada saat mengikuti artiker diatas pada kolom komentar dibawah ini

Jumat, 19 Mei 2017

Belajar C++ Struktur Data - Searching

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

2 komentar:

Footer Ads

Like , Comment , Follow Blog Saya ...

Label

LinuxMint/Ubuntu (73) BLC-Telkom (33) Kegiatan (26) Debian (24) Tool (17) Kumpulan Tugas (12) Mikrotik (10) CentOS7 (8) Coding PHP (7) CentOS6 (6) Google (6) IDE (3) IPFire (3) Raspberry PI (3) github (3) NodeJS (2) Virtualisasi (2) Windows (2) GIS (1) Vuejs (1)

Contact us

Nama

Email *

Pesan *