Minggu, 07 Juni 2015

MARI MENGENAL APA ITU SEARCHING DALAM C++



SEARCHING


Definisi Searching

Searching atau pencarian merupakan tindakan untuk mendapatkan suatu data dalam kumpulan data. Dalam kehidupan sehari-hari kita sering mengimplementasikannya misalnya kita hendak mencari arti kata pada kamus, mencari kontak rekan pada buku telepon, dan masih banyak lagi. Selain itu pencarian juga sering kita temukan pada aplikasi komputer misalkan pencarian file pada folder yang tidak kita ketahui dengan pasti lokasinya. Pada struktur data kita mengenal dua metode searching antara lain:


1.    Sequensial Search
 
Sequensial search atau pencarian beruntun  merupakan model pencarian yang paling sederhana yang dilakukan terhadap suatu kumpulan data. Pencarian beruntun dilakukan dengan melakukan penelusuran data satu persatu kemudian dicocokkan dengan data yang dicari, jika tidak sama maka penelusuran dilanjutkan, jika sama maka penelusuran dihentikan, berarti data telah ditemukan.



2.    Binary Search


Binary search atau Pencarian bagi dua hanya dapat dilakukan pada data yang sudah terurut, dengan kata lain, apabila data belum dalam keadaan terurut maka pencarian tidak dapat dilakukan.  

Berikut contoh dari Sequensial Search dan Binary Search dalam C++ :
  

//CONTOH Sequensial Search 

#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main()
{
//deklarasi variabel
    int A[10], index[10], i, j, k, n;

//proses input data
    cout<<"Inputkan Jumlah Data [Max 10] : ";
    cin>>n;
    cout<<endl;

    for(i=0;i<n;i++)
    {
        cout<<"Inputkan Data ke - "<<(i+1)<<" = ";
        cin>>A[i];
    }

//proses input data yang hendak dicari
    cout<<"Input Data Yang Ingin Anda Temukan : ";
    cin>>k;
    cout<<endl;

//proses pencarian data
    j=0;
   for (i=0;i<n;i++)
   {
       if(A[i]==k)
       {
           index[j]=i;
           j++;
       }
   }

//hasil pencarian
    if (j>0)
    {
         cout<<"Data " <<k<< " Ditemukan Sebanyak " <<j<< " Buah "<<endl;
         cout<<"Data Terdapat Pada Index ke : ";
         for(i=0;i<j;i++)
        {
            cout<<index[i]<<" ";
        }
        cout<<endl;
    }
    else
    {
         cout<<"Data Tidak Ditemukan!! "<<endl;;
    }
     getch();
}



//CONTOH Binary Search
  
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
    //deklarasi variabel
    int A[10], n, i, j, k, tkr, right, left, middle, tm;

    //proses penginputan data
    cout<<"Inputkan Jumlah Data = ";
    cin>>n;
    cout<<endl;
 
    for(i=0;i<n;i++)
    {
            cout<<"Inputkan Data ke - "<<(i+1)<<" = ";
            cin>>A[i];
    }
     cout<<endl;
     cout<<"Input Data Yang Ingin Anda Temukan : ";
     cin>>k;
     cout<<endl;

    //proses pengurutan data
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
             if (A[i]>A[j])
            {
                  tkr=A[i];
                 A[i]=A[j];
                 A[j]=tkr;
            }
        }
    }

    //proses pencarian data
    tm=0;
    right=n;
    left=0;
    while(right>=left)
    {
        middle=(right+left)/2;
        if(A[middle]==k)
        {
             tm++;
        }
        if(A[middle]<k)
        {
              left=middle+1;
        }
        else
        {
              right=middle-1;
        }
    }

    if (tm>0)
    {
         cout<<"Data " << k << " Ditemukan!! "<<endl;
    }

    //jika tidak ditemukan
    else
    {
          cout<<"Data Tidak Ditemukan!! "<<endl;
    }
    getch();
}

Sabtu, 06 Juni 2015

APA ITU SORTING...?



SORTING

Definisi Sorting

Pengurutan (sorting) adalah proses yang mengatur sekumpulan objek/data sehingga nilainya tersusun, baik itu dari kecil ke besar (ascending) atau dari besar ke kecil (descending). Disini saya akan membahas tentang selection sort dan insertion sort.

1.    Selection sort

Definisi Selection Sort

Metode selection sort merupakan metode membandingkan elemen yang pertama dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar.

Proses pengurutan menggunakan metode selection sort secara terurut naik adalah sebagai berikut: 
  1. Mencari data terkecil dari data pertama sampai dengan data yang terakhir. Kemudian ditukar posisinya dengan data pertama. 
  2. Mencari data terkecil dari data kedua sampai dengan data terakhir, kemudian ditukar posisinya dengan data kedua. 
  3. Begitu seterusnya sampai semua data terurut naik. Apabila terdapat n buah data yang akan diurutkan, maka membutuhkan (n-1) langkah pengurutan, dengan data terakhir, yaitu data ke n tidak perlu diurutkan karena hanya tinggal data satu-satunya.




2.      Insertion Sort

Definisi Insertion Sort

Metode Insertion Sort adalah metode pengurutan yang mengambil sebuah data sisip pada data yang diurutkan dan menggeser data yang lebih besar dari data sisip agar data sisip dapat ditempatkan pada tempat yang benar.

Proses yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort adalah dimulai dari data ke-2 kemudian disisipkan pada tempat yang sesuai. Ilustrasinya mirip seperti saat menyisipkan kartu di permainan kartu. Berikut ilustrasinya:




Contoh codding dari Selection Sort dan Insertion Sort secara ascending yang mana user ditentunkan menginputkan maksimal 15 data:




#include<iostream.h>
#include<conio.h>
int data[15];
int n;

void tukar(int a, int b)
{
    int t;
     t=data[b];
    data[b]=data[a];
    data[a]=t;
}

void selection_sort()
{
    int temp,i,j;
    for(i=0;i<n-1;i++)
    {
        temp=i;
        for(j=i+1;j<n;j++)
        {
            if(data[j]<data[temp])temp=j;
        }
        if(temp!=i)
        {
            tukar(temp,i);
        }
    }
    cout<<"Selection sort selesai!!"<<endl;
    cout<<"Data : "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}

void insertion_sort()
{
    int temp,i,j;
    for(i=1;i<n;i++)
    {
        temp=data[i];
        j=i-1;
        while(data[j]>temp && j>=0)
        {
            data[j+1]=data[j];
            j--;
        }
        data[j+1]=temp;
    }
    cout<<"Insertion sort selesai!!!"<<endl;
    cout<<"Data : "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}


void input()
{
    cout<<"Masukkan jumlah data = ";
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"Masukkan data ke - "<<(i+1)<<" = " ;
        cin>>data[i];
    }
}


void main()
{
    int pil;
    clrscr();
    do
    {
        clrscr();
        cout<<"1. Input Data"<<endl;
        cout<<"2. Selection Sort"<<endl;
        cout<<"3. Insertion Sort"<<endl;
        cout<<"4. Exit"<<endl;
        cout<<"Masukkan Pilihan anda = ";
        cin>>pil;

        switch(pil)
        {
            case 1: input();break;
            case 2: selection_sort();break;
            case 3: insertion_sort();break;
        }
        getch();
    }
    while(pil!=4);
}