Pages

Banner 468 x 60px

 

Senin, Januari 07, 2019

Algoritma Searching

0 komentar

Pengertian Algoritma Searching



Searching merupakan proses dasar dalam pengolahan data. Yaitu untuk menemukan nilai tertentu dalam sekumpulan data yang bertipe sama. Algoritma searching dijelaskan secara luas sebagai algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut. Algoritma searching menerima sebuah argument kunci dan dengan langkahlangkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah melakukan proses pencarian, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan atau tidak ditemukan.


Macam-macam Algoritma Searching
1. Pencarian Beruntun (Sequential Search)

Konsep

a) Membandingkan setiap elemen larik satu per satu secara urut (beruntun), mulai dari elemen pertama sampai dengan elemen yang terakhir sampai data ditemukan atau tidak ditemukan.
b) Proses pencarian akan dihentikan jika data yang dicari sudah ditemukan.
c) Merupakan metode yang paling sederhana
d) Kelemahan pada kasus ini adalah, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula.


Contoh

Pemcarian angka
#include <iostream>
using namespace std;
int main()
{
    cout<<"====== PROGRAM SEQUENTIAL SEARCH ========"<<endl<<endl;
    int n,bil_cari,Data[100];
    int i,ketemu;
    cout<<" Inputan Jumlah Data Dalam Array : ";
    cin>>n;
    cout<<endl;
    for(int c=0; c<n; c++)
        {
        cout<<" Elemen Data Array Ke - "<<c<<" = "; cin>>Data[c];
    }
    i=0;
    cout<<" \n\n Inputkan Bilangan Yang Dicari = "; cin>>bil_cari; ketemu = 0;
  
    while((i<n) && (ketemu==0))
    {
        if(Data[i] == bil_cari)
    {
        ketemu=1;
        cout<<" \n Pencarian sequential "<<bil_cari<<" Ada Pada Indeks ke - " <<i;
        }
        else
            i=i+1;
    }
        if(ketemu == 1)
            cout<<"\n Data ditemukan!!! "<<endl;
        else
            cout<<"\n Data tidak ditemukan!!!"<<endl;
    return 0;
}



dan setelah di run akan tampil seperti di bawah\





Dari program di atas, terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array data satu per satu berdasarkan indeksnya.

a) Program menggunakan sebuah variable flag yang berguna untuk menandai ada atau tidaknya data yang dicari dalam array data. Hanya bernilai 1 atau 0.
b) Flag pertama kali diinisialisasi dengan nilai 0.
c) Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0.
d) Semua elemen array data akan dibandingkan satu per satu dengan data yang dicari dan diinputkan oleh user.

2. Pencarian Bagi Dua (Binary Search)

Konsep

(a) Merupakan metode pencarian pada data terurut yang paling efisien.
(b) Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat.
(c) Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. data yang disimpan didalam larik harus sudah terurut.

Algoritma

Algoritma pencarian biner dapat dituliskan sebagai berikut:

(a) L ← 0
(b) R ← N – 1
(c) Ketemu ← false
(d) Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8
(e) m ← (L + R) / 2
(f) jika (Data[m]) maka ketemu ← true
(g) jika (x < Data[m]) maka R ← m – 1
(h) jika (x > Data[m]) maka L ← m + 1
(i) jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak maka data tidak ditemukan.

Contoh

#include <iostream>

using namespace std;

int main()
{
    int arr[100],awal,tengah,akhir,i,n,num;
    cout << "\nMasukkan Jumlah data : ";
    cin >> n;
    cout << "\nMasukkan data yang sudah terurut : " << endl;
    for (i=0;i<n;i++) {
    cout << "Masukkan data ke- "<< i+1 << " : ";

        cin >> arr[i];
        cout << endl;

        }
    //inisialiasi nilai awal dan akhir
    awal = 0;
    akhir = n-1;
    cout << "\nMasukkan angka yang dicari : ";
    cin >> num;
    return 0;

    while (awal <= akhir) {
//menentukan tengah
    tengah = (awal+akhir)/2;

//jika nilai ditemukan di tengah,maka tampilkan posisi dan keluar
    if(arr[tengah] == num) {

    cout << "\nAngka ditemukan pada posisi : " << (tengah+1);

return(0);

        }  else if (num > arr[tengah]) {
        awal=tengah+1;

        } else if (num < arr[tengah]) {
        akhir=tengah-1;
        }
    }
        cout << "Angka tidak ditemukan!";
    return 0;
}
 

0 komentar:

Posting Komentar