Wednesday, December 14, 2016

Sorting & Searching

Searching

Searching atau pencarian merupakan suatu metode untuk mencari data sesuai yang diinginkan oleh user. Dalam searching terdapat beberapa metode, salah satunya adalah sequential dan binary search.
1. Sequential search
Dari namanya saja kita sudah bisa menebak bagaimana metode tersebut bekerja. Sequential sort atau linear search bekerja dengan membandingkan yang dicari dari sekumpulan data secara sequence atau berkelanjutan dari awal hingga ahkir. Sequential sort lebih efektif digunakan untuk membandingkan data dengan jumlah data yang sedikit. Di bawah ini akan diilustrasikan bagaimana metode sequential sort bekerja :

#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
       int data[10];
       int max;
       int i,cari,ditemukan,lokasi;
     
       ditemukan=0;
     
       cout<<"Masukkan maksimal data : ";
       cin>>max;
       cout<<endl;
     
   for(i=1;i<=max;i++)
   {
       cout<<"data ke-"<<i<<":";
      cin>>data[i];
   }
   cout<<"masukkan data yang dicari :";
   cin>>cari;
   for(i=1;i<=max;i++)
   {
       if (data[i]=cari&&data[i]==cari)
      {
      lokasi=i;
        cout<<"data ditemukan pada indeks ke-"<<lokasi<<endl;
      }
   }

   getch();
   return 0;
}

Screenshoot


2. Binary Search
Berbeda dengan sequential search, binary search lebih efektif digunakan untuk perncarian data yang jumlahnya banyak, dengan syarat semua data sudah terurut. Proses pencarian data dengan metode binary search dapat dilakukan dengan cara sebagai berikut :
·  Pertama, tentukanlah indeks data yang pertama dan yang terahkir untuk mencari indeks yang berada di tengah. Sebagai contoh, jumlah data sebanyak 20, maka indeks data yang berada ditengah adalah indeks data tengah = (indeks data awal + indeks data ahkir) / 2, indeks data tengah = (1+20)/2 = 10,5, bulatkan kebawah sehingga kita mendapatkan indeks data ditengah adalah 10. 
·  Jika lebih kecil, proses dilakukan kembali tetapi posisi ahkir dianggap sama dengan posisi tengah -1. 
·  Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.
·  Pencarian data selesai

#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
       //deklarasi variabel
       int A[10],n, i,j,k,tkr,kanan,kiri,tengah,temp;
      //proses penginputan data
   cout<<"Masukkan jumlah data = ";
   cin>>n;
       for(i=0;i<n;i++)
       {
       cout<<"Masukkkan data ke - "<<(i+1)<<" = ";
      cin>>A[i];
       }
   cout<<"Masukkan data yang akan anda cari :";
   cin>>k;
    //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
       temp=0;
       kanan=n;
       kiri=0;
       while(kanan>=kiri)
       {
              tengah=(kanan+kiri)/2;
              if(A[tengah]==k)
              {
                     temp++;
              }
              if(A[tengah]<k)
              {
                     kiri=tengah+1;
              }
              else
              {
                     kanan=tengah-1;
              }
   }
       if (temp>0)
   {
       cout<<"Data " << k << " yang dicari ada dalam array"<<endl;
   }
       //jika tidak ditemukan
       else
       {
       cout<<"Data tidak ditemukan dalam array"<<endl;
   }
   getch();
   return 0;
}




No comments:

Post a Comment