Jumat, 03 Mei 2019

BINARY SEARCH DAN SEQUENTIAL

MATERI

A.  Pengertian Searching
Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memori komputer. Dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data atau informasi yang ada dalam internet. Ada beberapa metode yang dapat digunakan untuk searching, ada yang dinamakan:
1.      Sequential Search
2.      Binary Search
B.   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 Sequential Search efektif untuk mencari data yang dalam posisi yang tidak terurut atau acak.
Prosesnya bisa dijelaskan seperti berikut:
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.
4.      Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah temukan.
5.      Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa data telah temukan.
Sequential Searching memiliki Kelebihan dan Kekurangan. 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. 
Ada dua metode yang digunakan pada Sekuensial ini, yaitu dengan Sentinel atau tanpa menggunakan Sentinel dan metode itu dapat digunakan pada data yang sudah terurut maupun yang ter acak.
C.  Binary Search
 Salah satu syarat pencarian biner (Binary Search) yang dapat dilakukan adalah data sudah dalam keadaan terurut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita sering menggunakan pencarian biner, misalnya pada saat ingin mencari suatu kata dalam kamus. Langkah dari pencarian biner adalah sebagai berikut:
1.      mula-mula diambil posisi awal = 1 dan posisi akhir = n
2.      kemudian kita cari posisi data tengah dengan rumus posisi tengah = (posisi awal + posisi akhir) div 2
3.      kemudian data yang dicari dibandingkan dengan data tengah
a.       jika sama, data ditemukan, proses selesai.
b.      jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah - 1.
c.       jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.
d.      ulangi langkah 2 sampai data ditemukan, atau tidak ditemukan.
e.       Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.

PERMASALAHAN


Permasalahan yang terdapat pada laporan praktikum kali ini yaitu :
1.      Pencarian data nama dan nilai dengan menggabungkan dua metode searching (binary dan sequential).

LISTING PROGRAM


#include <iostream>
using namespace std;
int main ()
{
    cout<<"NAMA : KEVIN RIZKY ANYA "<<endl;
    cout<<"NIM  :1801301026"<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;

    int n, awal, akhir, tengah,i,data;
    string nama[5],pilih,x,absen[5],ok;

    cout<<"Pilih Metode Pencarian :"<<endl;
    cout<<"A. Sequential "<<endl;
    cout<<"B. Binary "<<endl;
    kembali:
        cout<<"Masukan Pilihan : ";
        cin>>pilih;
        if (pilih=="a"||pilih=="A")
        {
            cout<< "Banyak Data Adalah : ";
            cin>>data;
            cout<<endl;

        for(i=0;i<data;i++)
        {
            cout<<"Nama Ke - "<<i+1<<" : ";
            cin>>nama[i];
            cout<<"NO Absen :";
            cin>>absen[i];
            cout<<endl;
        }
        cout <<"Masukan Data Yang Dicari : ";
        cin>>x;
        cout<<endl;
        i=0;
        ulang:
        if(i!=data)
        {
            if(nama[i]==x)
            {
                cout<<"Nama Yang Anda Cari Ditemukan Pada Data Ke-"<<i+1<<endl;
                cout<<"Dengan Absen "<<absen[i];
            }
            else if (absen[i]==x)
            {
                cout<<"Absen Yang Anda Cari Ditemukan Pada Data Ke-"<<i+1<<endl;
                cout<<"Dengan Nama "<<nama[i]<<endl;
            }
            else
            {
                i++;
                goto ulang;
            }
        }
        else
        {
            cout<<"Data Tidak Di Temukan";
        }
        }
    else if (pilih=="b"||pilih=="B")
    {
        cout<<"Masukan Jumlah Data : ";
        cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"Nama Ke-"<<i+1<<" : ";
        cin>>nama[i];
        cout<<"NO Absen     :";
        cin>>absen[i];
        cout<<endl;
    }
    cout<<"Masukan Absen Yang Di Cari : ";
    cin>>x;
    awal=0;
    akhir=n-1;
    do
    {
        tengah=(awal+akhir)/2;
      if (x<absen[tengah])
      {
          akhir =tengah-1;
      }
      else
      {
          awal=tengah+1;
      }

    }
    while ((akhir>=awal)&&(absen[tengah]!=x));
    {
        if (absen[tengah]==x)
        {
            cout << "Absen "<<x<<" Ada Pada Posisi Ke-"<<tengah+1;
            cout << "Dengan Nama : "<<nama[i]<<endl;
        }
        else
        {
            cout<<"Data Yang Dicari Tidak Ditemukan ";
        }
    }
    }
    else
    {
        cout<<"Anda Salah Melakukan Pilihan"<<endl;
        cout<<"Apakah Ingin Mengulang [Y/T] : ";
        cin>>ok;
        cout<<endl;
        if(ok=="Y"||ok=="y")
        {
            goto kembali;
        }

    }

}
Diberdayakan oleh Blogger.

About me

Instagram : kvinrzkyxd
Wa : 082148535913

Email: kevinrizkyanya@gmail.com

Formulir Kontak

Nama

Email *

Pesan *

Total Tayangan Halaman


Cari Blog Ini

Sponsor

AD BANNER