Algoritma Searching
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;
}
#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;
}
TERIMAH KASIH SEMOGA BERMANFAAT :)
Tidak ada komentar:
Posting Komentar