SEARCHING (PENCARIAN)
Oleh :
Tujuan Khusus
1. Mahasiswa mampu menjelaskan mengenai algoritma Searching.
2. Mahasiswa mampu membuat dan mendeklarasikan struktur
algoritma Searching.
3. Mahasiswa mampu menerapkan dan mengimplementasikan
algoritma Searching.
B. DASAR TEORI
a) Sequential Search (Linear Search)
Sequential Search adalah teknik pencarian data dimana data dicari secara urut dari
depan ke belakang atau dari awal sampai akhir. Kelebihan dari proses pencarian secara
sequential ini jika data yang dicari terletak didepan, maka data akan ditemukan dengan
cepat. Tetapi dibalik kelebihannya ini, teknik ini juga memiliki kekurangan. Pertama, jika
data yang dicari terletak dibelakang atau paling akhir, maka akan membutuhkan waktu
yang lama dalam proses pencariannya. Kedua, beban komputer akan semakin bertambah
jika jumlah data dalam array sangat banyak. Disini IT Programmer akan memberikan
contoh sintaks dari Sequential Search dalam C++. Tidak ada penginputan data oleh user
dalam program ini, karena data telah dideklarasikan terlebih dahulu. Kalian dapat
mengubahnya sendiri jika kalian telah lebih menguasai bagian ini.
Teknik pencarian data dari array yang paling mudah adalah dengan cara sequential
search, dimana data dalam array dibaca 1 demi satu, diurutkan dari index terkecil ke
index terbesar, maupun sebaliknya.
Contoh :
Array :
int a[5] = {0,3,6,10,1} (index array pada bahasa C++ dimulai dari index ke 0 !!!) jika kita
ingin mencari bilangan 6 dalam array tersebut, maka proses yang terjadi kita mencari
a) dari array index ke-0, yaitu 0, dicocokan dengan bilangan yang akan dicari, jika
tidak sama, maka mencari ke index berikutnya
b) pada array index ke-1, juga bukan bilangan yang dicari, maka kita mencari lagi
pada index berikutnya
c) pada array index ke-2, ternyata bilangan yang kita cari ada ditemukan, maka kita
keluar dari looping pencarian.
Contoh source :
Output:
b) Binary search
Metode pencarian yang kedua adalah binary search, pada metode pencarian ini, data
harus diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi menjadi dua
bagian (secara logika), untuk setiap tahap pencarian
Pencarian Biner (Binary Search) dilakukan untuk :
Memperkecil jumlah operasi pembandingan yang harus dilakukan antara data
yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data
yang sangat besar ukurannya.
Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara
berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat
dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut,
misalkan terurut menaik.
C. PERCOBAAN :
Percobaan 1
Algoritma dan Struktur Data
Ke Nama Program : Program Searching menerima inputan data ke dalam sebuah
array.
Bahasa Pemrogramam : C++
Compiler : Code Blocks
Script program #include <stdio.h> :
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <math.h>
using namespace std;
int data[10],data2[10];
void Sequential_Search() //fungsi pencarian dengan sequential
{
int i,cari,flag=0;
printf("Masukan data yang ingin dicari : ");
scanf("%i",&cari);
for(i=0;i<10;i++)
{
if(data[i]==cari)
{
flag=1;
break;
}
}
if(flag==1)
printf("Data yang dicari ditemukan pada index ke-%i\n",i);
else
{
printf("Data yang dicari tidak ditemukan!\n");
printf("\n");
}
}
void Binary_Search() //fungsi pencarian dengan binary
{
int temp,awal,tengah,akhir,cari,a,i,flag=0;
awal=0;
akhir=9;
printf("Masukkan Data yang anda cari :");
void Interpolation_Search() //fungsi pencarian dengan interpolation
{
int data[10];
int low,high,pos,cari,flag=0;
float posisi;
low=0;
high=9;
printf("Masukkan Data yang anda cari :");
scanf("%i",&cari);
do
{
posisi=(float)((cari-data2[low])/(data2[high]-data2[low]))*(high-low)
+low;
pos=floor(posisi);
if (data2[pos]==cari)
{
flag=1; //data ditemukan
break;
}
if(data2[pos]>cari) high=pos-1;
else if(data2[pos]<cari) low=pos+1;
}while(cari>=data2[low] && cari<=data2[high]);
if(flag==1)printf("Data Anda ditemukan\n");
else printf("Data Anda tidak ditemukan!\n");
}
void Input_Data() //fungsi input data
{
printf("\nMasukkan data Sebanyak 10\n\n");
for(int i=0;i<10;i++) //data sebanyak 10
{
printf("Data ke-%d = ",(i+1));
scanf("%d",&data[i]);
data2[i] = data[i];
}
}
int main()
{
int pilih,i,a,temp;
cout<<" |+++++++++++++++++++++++++++++|"<<endl;
printf(" | Menu Searching |\n");
cout<<" |-----------------------------|"<<endl;
printf(" | 1. Sequential Search |\n");
printf(" | 2. Binary Search |\n");
printf(" | 3. Interpolation Search |\n");
cout<<" |+++++++++++++++++++++++++++++|"<<endl;
printf("\nMasukkan Pilihan Anda = ");
scanf("%d",&pilih);
Input_Data();
for (a=0;a<=4;a++)
{
data2[a]=data[a];
}
for (a=0;a<4;a++)
{
for (i=a+1;i<=4;i++)
{
if (data2[i]<data2[a])
{
temp = data2[i];
data2[i] = data2[a];
data2[a] = temp;
}
}
}
Output Program :
switch(pilih)
{
case 1:Sequential_Search();
break;
case 2:Binary_Search();
break;
case 3:Interpolation_Search();
break;
default:
break;
}
}
Algoritma :
1) Mulai.
2) Membaca file header.
3) Membaca tipe data int dalam sebuah array.
4) Membaca fungsi sequential search.
5) Membaca fungsi binary search.
6) Membaca fungsi interpolation search.
7) Membaca fungsi input data.
8) Membaca fungsi utama.
9) Inputan Pilihan 1, 2, 3.
10) Masukkan pilihan 1/2/3.
11) Membaca fungsi inputan data kemudian perulangan for
for (a=0;a<=4;a++)
{
data2[a]=data[a];
}
for (a=0;a<4;a++)
{
for (i=a+1;i<=4;i++)
{
if (data2[i]<data2[a])
{
temp = data2[i];
data2[i] = data2[a];
data2[a] = temp;
}
}
}
12) Membaca fungsi percabangan switch-case.
13) Membaca fungsi default dan break.
14) Cetak hasil.
15) Selesai.
Deskripsi:
Program diatas adalah aplikasi dari 3 pilihan metode searching yang dijadikan satu
dengan menggunakan percabangan switch-case. Program diatas menggunakan fungsi
sequential search, binary search dan interpolation search, dan itu semua merupakan metode
metode dalam pencarian.
Percobaan 2.1
Algoritma dan Struktur Data
Nama Program : Program array 1 dimensi
Bahasa Pemrogramam : C++
Compiler : Code Blocks
Script program :
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int data[100];
int i, cari, n;
cout<<endl;
cout<<"Masukkan jumlah array = ";
cin>>n;cout<<endl;
for(int j=0;j<n;j++)
{
cout<<endl;
cout<<" Data Ke ["<<j<<"] = ";
Output Program:
Algoritma :
1. Mulai
2. Membaca header file
3. Pendeklarasian
4. Membaca fungsi
5. Masukkan jumlah array
6. Input data sebanyak jumlah array
7. Masukkan data yang dicari
8. Cetak Hasil
9. Selesai
Deskripsi:
Program diatas menampilkan sebuah pencarian data dari sebuah array
dimensi 1. Pertama user akan memasukkan jumlah array yang akan dimasukkan,
kemudian user akan memasukkan data sebanyak jumlah array yang dimasukkan
sebelum. Tujuan program diatas adalah mencari data yang dicari pada posisi
indeks berapa.
Percobaan 2.2
Algoritma dan Struktur Data
Nama Program : Program array 2 dimensi
Bahasa Pemrogramam : C++
Compiler : Code Blocks
Script program :
#include<iostream>
#include<iomanip>
using namespace std;
int main ()
Output Program :
cout<<endl;
cout<<"Masukkan nilai Anda yang dicari : ";
cin>>cari;
cout<<endl;
i=0;
for (a=0;a<baris;a++)
{
for (b=0;b<kolom;b++)
{
if (cari==data[a][b])
{
cout<<"Data Anda ditemukan pada indeks ["<<a<<"]
["<<b<<"]\n";
i++;
}
}
}
if (i==0)
cout<<"Maaf Data Anda tidak ditemukan!"<<endl;
}
Algoritma :
1. Mulai
2. Membaca header file
3. Pendeklarasian
4. Masukkan banyak baris array
5. Masukkan banyak kolom array
6. Masukkan data sesuai dengan banyak array yang telah ditentukan
7. Menampilkan array
8. Masukkan data yang ingin dicari
9. Cetak hasil menampilkan pada indeks ke – data tersebut
10. selesai
Deskripsi :
Program diatas menampilkan sebuah array 2 dimensi, kemudian akan
dicari data yang ingin dicari. Pertama user memasukkan banyak baris array.
Setelah itu user memasukkan banyak kolom array sesuai dengan yang diinginkan.
Kemudian user memasukkan data sesuai dengan banyak baris dan kolom yang
dimasukkan sebelumnya. Setelah itu array akan ditampilkan dan selanjutnya user
memasukkan data yang ingin dicari. Hasil dari program diatas adalah data yang
dicari berada pada indeks ke [. . .] .
Percobaan 3.1
Algoritma dan Struktur Data
Nama Program : Program array 1 dimensi
Bahasa Pemrogramam : C++
Compiler : Code Blocks.
Script program :
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int data[100];
int i, cari, n, jumlah=0;
cout<<endl;
cout<<"|>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<|"<<endl;
cout<<"| Program Searching |"<<endl;
cout<<"|>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<|"<<endl;
cout<<endl;
cout<<" Masukkan jumlah array = ";
cin>>n;
cout<<endl;
for(int j=0;j<n;j++)
{
cout<<"Masukkan data ke ["<<j<<"] = ";
cin>>data[j];
cout<<endl;
}
cout<<"Masukkan data yang ingin dicari : ";
cin>>cari;
cout<<endl;
printf(" Data %i ditemukan pada indeks ", cari);
for(i=0;i<n;i++)
Output Program :
Algoritma :
1. Mulai
2. Membaca header file
3. Pendeklarasian
4. Masukkan jumlah array yang diingikan
5. Masukkan data-data array sesuai dengan jumlah array
6. Masukkan data yang ingin dicari
7. Cetak hasil seperti “ data ( . . . ) ditemukan pada indeks ke [ ], data ditemukan
sebanyak ( . . . ) data
8. Selesai
Deskripsi :
Program diatas akan mencari sebuah data dan banyak data yang dicari tersebut. Sama
seperti program-program sebelumnya program ini menggunakan fungsi array. Untuk hasil
dari
{
if(data[i]==cari){ //jika data yang dicari berada pada data data[i]
printf("ke [%i], ", i); //tampilkan data beserta index
jumlah=jumlah+1; //dan penemuan data dijumlahkan
}
}
cout<<endl;
cout<<"\n Data yang Anda cari ditemukan sebanyak "<<jumlah<<" data.";
cout<<endl;
}
program diatas menampilkan semua data yang dicari ketika data yang dicari jumlahnya lebih
dari satu. Untuk menentukan jumlah data yang di cari menggunakan script seperti berikut :
if(data[i]==cari){ //jika data yang dicari berada pada data data[i]
printf("ke [%i], ", i); //tampilkan data beserta index
jumlah=jumlah+1; //dan penemuan data dijumlahkan
Percobaan 3.2
Algoritma dan Struktur Data
Nama Program : Program input number secara random
Bahasa Pemrogramam : C++
Compiler : Code Blocks.
Script program :
#include<iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int n,data[50],cari,a,i,ganjil,genap,odd[50],even[50];
cout<<endl;
cout<<"Inputkan data :";
cin>>n;
cout<<endl;
cout<<" Data random : \n";
cout<<endl;
for (a=0;a<n;a++)
{
data[a]=rand();
cout<<data[a];
cout<<endl;
}
ganjil=0;
genap=0;
for (a=0;a<n;a++)
{
if(data[a]%2==0)
{
genap++;
even[genap]=data[a];
}
else
{
ganjil++;
odd[ganjil]=data[a];
}
}
cout<<endl;
cout<<" Data genap ada "<<genap<<" itu adalah\n";
for (a=1;a<=genap;a++)
Output Program :
Algoritma :
1. Mulai
2. Membaca header file
3. Pendeklarasian
4. Masukkan jumlah data
5. Membaca fungsi random
6. Tampilan data yang muncul secara random
7. Membaca fungsi
a. Yang termasuk dalam bilangan genap
b. Yang termasuk dalam bilangan ganjil
8. Hasil
9. Selesai
Deskripsi :
Program diatas menampilkan data secara random dimana user hanya memasukkan
jumlah data yang ingin tampilkan. Kemudian program diatas akan mengolongkan data-data
sesuai dengan golongan nya yaitu golongan bilangan genap atau pada golongan bilangan
ganjil.
D.TUGAS RUMAH (SEKALIGUS PRAKTIKUM):
Tugas Rumah 1
Algoritma dan Struktur Data
Nama Program : Program Kata
Bahasa Pemrogramam : C++
Compiler : Code Blocks.