Searching (Pencarian) dalam Struktur Data




Dalam ilmu komputer, suatu pencarian struktur data adalah setiap struktur data yang memungkinkan pengambilan suatu item tertentu dari satu set item, seperti sebuah data khusus dari suatu database yang bertipe sama. Pencarian berfungsi untuk memvalidasi (mencocokkan) data.
Metode Searching:
1.       Sequential Search
Sequential search adalah metode pencarian data yang prosesnya dilakukan dengan membandingkan data yang dicari dengan masing-masing data didalam suatu data bertipe sama (array). Pencarian dilakukan dari awal sampai akhir dari data berdasarkan kunci (key) yang dicari. Pencarian akan berhenti jika data telah ditemukan atau tidak ada lagi data yang dibandingkan. Metode sequential search dapat digunakan untuk melakukan pencarian data baik pada array yang sudah terurut maupun belum terurut (acak).


Contoh:
A = 2       8      4     6     7     5      9
Dilakukan pencarian apakah didalam data tersebt terdapat nilai 6.
         1       2      3     4     5     6       7               i = 1 s/d n
A =   2       8      4     6     7      5      9

x = 6
ketemu ß false
i=1
A[1] <> {ketemu ß false}
i=1+1=2
A[2] <> {ketemu ß false}
i=2+1=3
A[3] <> {ketemu ß false}
i=3+1=4
A[4] <> {ketemu ß true}
Hasil dari pencarian data bernilai 6 tersebut ditemukan pada posisi ke-4

        Contoh Program:
#include<iostream>
using namespace std;

int main()
{
    int i, x, search;
    int position, found;
    int A[10];
    int ans;
        cout<<"The amount of data: ";
        cin>>x;
      
        for(i=0; i<x; i++)
        {
            cout<<"\n Data number "<<i<<" : ";
            cin>>A[i];
        }
        cout<<"\n Enter data to search: ";
        cin>>search;
      
        found=0;
        for(i=0; i<x; i++)
        {
            if(A[i] == search)
            {
                found = 1;
                position = i;
                i = x;
            }
        }
        if(found == 0)
        {
            cout<<" Data not found!!";
        }
        else
        {
            cout<<" Data found on the index: "<<position;
        }
}
       
2.       Binary Search
Binary search merupakan sebuah proses pencarian data yang sudah terurut, baik dari kecil ke besar maupun dari besar ke kecil.
Konsep pencariannya dilakukan seperti berikut:
1.       Tentukankanlah indeks data pertama dan yang terakhir untuk mencari indeks yang berada ditengah. Contoh: Jumlah data=20 (tengah=indeks data awal + indeks data akhir)/2 à (1+20)/2=10,5 à bulatkan kebawah sehingga kita mendapatkan indeks data tengah =10.
2.       Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah -1.
3.       Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.
4.       Pencarian data selesai.

       Contoh Program:
#include<iostream>
using namespace std;

int main()
{
    int n, A[12], left, right, mid, temp, key, i, j;
    bool found = false;
  
        cout<<" The amount of data: ";
        cin>>n;
      
        for(i=0; i<n; i++)
        {
            cout<<" Data number "<<i<<" : ";
            cin>>A[i];
        }
      
        for(i=0; i<n; i++)
        {
            for(j=0; j<n; j++)
            {
                if(A[j] > A[j+1])
                {
                    temp = A[j];
                    A[j] = A[j+1];
                    A[j+1] = temp;
                }
            }
          
        }
        cout<<" Data after sorted: ";
        for(i=0; i<n; i++)
        {
            cout<<A[i]<<" ";
        }
      
        cout<<"\n Enter data to search: ";
        cin>>key;
      
        left=0;
        right=n-1;
        while(left<=right)
        {
            mid=(left + right)/2;
            if(key == A[mid])
            {
                found=true;
                break;
            }
            else if(key < A[mid])
            {
                right = mid - 1;
            }
            else
            {
                left = mid + 1;
            }
        }
      
        if(found == true)
        {
            cout<<" Data found on te index: "<<mid;
        }
        else
        {
            cout<<" Data not found!!";
        }
}
      
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment