• Tidak ada hasil yang ditemukan

SEARCHING ARRAY. searching. Pendahuluan.

N/A
N/A
Protected

Academic year: 2022

Membagikan "SEARCHING ARRAY. searching. Pendahuluan."

Copied!
9
0
0

Teks penuh

(1)

SEARCHING ARRAY

Pendahuluan.

Sesuai dengan judulnya, dalam modul ini kita akan membahas proses pencarian / searching data pada suatu array / barisan data. Jika diketahui ada sebuah array / barisan data bernama A yang menampung 10 data yang bertipe integer sbb A={1,2,3,4,8,5,7,9,6,0} dan kita diberi tugas untuk mencari beberapa data misal:

• Jika data yang akan dicari dalam array A adalah 6, maka dengan cepat dapat kita ketahui bahwa data 6 ada dalam array A pada index ke-9 (index pada array dimulai dari 0)

• Sedangkan jika data yang akan dicari dalam array A adalah 12, maka dapat disimpulkan bahwa array A tidak memiliki data 12 tersebut.

Nah, kita sudah memahami proses pencarian data yang sederhana tersebut dalam pikiran kita, sekarang permasalahannya adalah bagaimana mengimplementasikannya kedalam program ?

Metode Searching yang umumnya dipakai

Pada umumnya dikenal dua metode searching antara lain : Sequensial search dan binary search, Untuk lebih memahami kedua metode ini lebih baik kita mulai dari metode yang paling sederhana terlebih dahulu yaitu sequensial search.

Sequensial search

Yang disebut juga sebagai metode pencarian urut adalah metode pencarian yang paling mudah. Bayangkan saja jika anda dihadapkan pada sebuah rak buku, dan anda diberi tugas untuk mencari sebuah buku dari rak tersebut. Sudah tentu anda akan mulai mencarinya satu- persatu entah itu dari atas atau dari bawah sampai buku yang dimaksud ketemu.

Singkatnya sequential search memiliki proses sebagai berikut:

• Tentukan banyaknya data yang akan di olah, missal banyak data adalah N.

• Tentukan data apa yang akan dicari, missal data yang akan dicari adalah C.

• Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal counternya adalah K.

• Inisialisasikan K =0

• Lakukanlah perulangan sebanyak N kali

(2)

• Dalam tiap proses perulangan tersebut periksalah apakah data yang sedang diolah sama dengan data yang dicari.

• Jika ternyata sama K=K+1

• Jika tidak, lanjutkan proses perulangan .

• Setelah proses perulangan berhenti, periksalah nilai K.

• Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan nilai K ke layer sebagai jumlah data yang ditemukan.

• Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan ke layar bahwa data tidak ditemukan

• Proses selesai.

Dapat disimpulkan bahwa sequential search, akan mencari data dengan cara membandingkannya satu-persatu dengan data yang ada. Prosesnya tentu saja akan singkat jika data yang diolah sedikit, dan akan lama jika data yang diolah banyak. Disarankan proses ini digunakan pada jumlah data yang sedikit saja.

(3)

Berikut ini adalah coding program sequential searching yang di tulis dengan Microsoft visual C++

Penjelasan:

Pada program diatas jumlah data yang akan diolah berjumlah 10 data dan disimpan kedalam array A[10] yang bejenis integer, array index[10] digunakan untuk mencatat index pada array A dimana data ditemukan daya tampung array sama dengan array A karena ada kemungkinan data yang akan dicari adalah semua data yang ada dalam array A. sedangkan variable I digunakan sebagai counter dalam proses perulangan, variable j digunakan sebagai counter untuk

#include<stdio.h>

void main() {

//deklarasi variabel

int A[10],index[10], i,j,k;

//proses penginputan data for(i=0;i<10;i++)

{

printf("data ke-%d:",i+1);

scanf("%d",&A[i]);

}

//memasukkan data yang akan dicari ke dalam K printf("Masukkan data yang akan anda cari:");

scanf("%d",&k);

//proses pencarian data j=0;

for (i=0;i<10;i++) {

if(A[i]==k)

{

index[j]=i;

j++;

}

}

//jika data ditemukan dalam array if (j>0)

{

printf("data %d yang dicari ada %d buah\n",k,j);

printf("Data tersebut terdapat dalam index ke :");

for(i=0;i<j;i++)

{

printf(" %d ",index[i]);

}

printf("\n");

}

//jika tidak ditemukan else

{

printf("data tidak ditemukan dalam array\n");

} }

(4)

menghitung jumlah data yang ditemukan dan variable k digunakan untuk menyimpan data yang akan dicari.

Proses pertama adalah memasukkan data-data yang akan diolah ke dalam array A dan data yang akan dicari ke dalam variable K. setelah itu akan dilakukan perulangan sebanyak data yang ada dalam array A untuk mencari apakah ada data dalam variable K didalam array A, jika ada maka counter j akan mencatat jumlahnya dan array index akan mencatat pada index ke berapa data tersebut ditemukan. Setelah proses perulangan selesai, tampilkanlah hasil yang terdapat pada variable j dan array index ke layer.

Gambaran kerja program

(Perhatikan koding diatas agar lebih jelas)

Misalkan pada perulangan yang pertama kita masukkan data sebagai berikut:

Array A (berisi data yang akan diolah)

ISI 1 3 5 8 6 5 7 11 9 0 INDEX 0 1 2 3 4 5 6 7 8 9 Data yang akan dicari K=5

Proses pencarian / proses perulangan yang kedua Array A (berisi data yang akan diolah)

ISI 1 3 5 8 6 5 7 11 9 0 INDEX 0 1 2 3 4 5 6 7 8 9 Data ditemukan ketika i = 2

Maka K++ menjadi 1, artinya ada 1 data dalam array A

Array index akan menyimpan index tempat data tersebut ditemukan pada array A

Array index (berisi index data yang ditemukan pada array A)

ISI 2

INDEX 0 1 2 3 4 5 6 7 8 9 Data ditemukan ketika i = 5

Maka K++ menjadi 2, artinya ada 2 data dalam array A

Array index akan menyimpan index tempat data tersebut ditemukan pada array A

(5)

Array index (berisi index data yang ditemukan pada array A)

ISI 2 5

INDEX 0 1 2 3 4 5 6 7 8 9

Proses pencarian data selesai dan tampilkan hasil output Data 5 yang dicari ada 2 buah Å ambil dari variable K

Data tersebut terdapat dalam index ke: 2 5 Å ambil dari array index.

Binary Search

Proses pencarian binary search hanya dapat dilakukan pada kumpulan data yang sudah diurutkan terlebih dahulu. Jika terdapat N buah data yang akan dolah, data yang dicari akan dibandingkan dengan data ke- N jika data ke-N lebih besar dari data yang dicari maka akan dilakukan pembagian data menjadi dua bagian. Kemudian ujung data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.

Contoh kasus:

Ada 12 data 11 13 15 18 23 27 29 31 54 58 59 61 Data yang akan dicari : 13

a. Proses 1

11 13 15 18 23 27 29 31 54 58 59 61 Å lebih besar dengan data yg akan dicari , lakukan pembagian data

b. Proses 2

11 13 15 18 23 27Å lebih besar dari data yang dicari, bagi 2 29 31 54 58 59 61

c. Proses 3

11 13 15Å lebih besar dari data yang dicari, bagi 2 18 23 27 29 31 54 58 59 61

d. Proses 4

11 Ålebih kecil dari data yang dicari, abaikan saja 13 15Å lebih besar dari data yang dicari, bagi 2 18 23 27 29 31 54 58 59 61

e. Proses 5

11 13 Å sesuai data yang dicari 15 Ålebih besar dari data yang dicari 18 23 27 29 31 54 58 59 61

Dari proses diatas dapat disimpulkan bahwa binary search akan membagi-bagi sekumpulan data menjadi 2 bagian sampai data yang dicari ditemukan.

(6)

Kesimpulan:

1. Sequential search lebih efektif jika digunakan pada sekumpulan data yang sedikit, sedangkan binary search efektif jika digunakan pada sekumpulan data yang berjumlah banyak.

2. sequential search dapat digunakan pada sekumpulan data yang urut ataupun tidak urut, sedangkan binary search harus pada data yang sudah urut.

*<tambahan bila cukup waktu>

Interpolation search

Proses pencarian data ini hampir sama dengan proses pencarian binary search, pencarian ini juga dilakukan pada kumpulan data yang sudah urut. Akan tetapi jika pada binary search kita membagi data menjadi 2 bagian tiap prosesnya, pada interpolation search kita akan membagi data menurut rumus sebagai berikut:

Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) + low

Singkatnya proses pencarian interpolation search hampir mirip dengan proses pencarian kata dikamus, yaitu kita mencari data yang dimaksud dengan cara memperkirakan letak data.

Misal terdapat data sebagai berikut:

Kode Judul Buku Pengarang

025 The C++ Programming James Wood 034 Mastering Delphi 6 Marcopolo 041 Professional C# Simon Webe 056 Pure JavaScript v2 Michael Bolton 063 Advanced JSP & Servlet David Dunn 072 Calculus Make it Easy Gunner Christian 088 Visual Basic 2005 Express Antonie

096 Artificial Life : Volume 1 Gloria Virginia Kunci Pencarian ? 088

Low ? 0 High ? 7

Posisi = (088 - 025) / (096 - 025) * (7 - 0) + 0 = [6]

Kunci[6] = kunci pencarian, data ditemukan : Visual Basic 2005

(7)

Kunci Pencarian ? 060 Low ? 0

High ? 7

Posisi = (060 – 025) / (096 – 025) * (7 – 0) + 0 = [3]

Kunci[3] < kunci pencarian, maka teruskan Low = 3 + 1 = 4

High = 7

Ternyata Kunci[4] adalah 063 yang lebih besar daripada 060.

Berarti tidak ada kunci 060.

Latihan soal:

1. Coba buatlah program dengan metode sequential search untuk mencari data bertipe karakter .

2. Coba buatlah program untuk mencari data dengan metode binary search untuk mencari data bertipe karakter .

(8)

CODING Program binary search

#include<stdio.h>

void main() {

//deklarasi variabel

int A[10], i,j,k,tkr,top,bottom,middle,tm;

//proses penginputan data for(i=0;i<10;i++) {

printf("data ke-%d:",i+1);

scanf("%d",&A[i]);

}

printf("Masukkan data yang akan anda cari:");

scanf("%d",&k);

//proses pengurutan data

for(i=0;i<10;i++) {

for(j=i+1;j<10;j++) {

if (A[i]>A[j]) {

tkr=A[i];

A[i]=A[j];

A[j]=tkr;

} } }

//proses pencarian data tm=0;

top=9;

bottom=0;

while(top>=bottom) {

middle=(top+bottom)/2;

if(A[middle]==k) {

tm++;

}

if(A[middle]<k) {

bottom=middle+1;

} else {

top=middle-1;

} }

if (tm>0) {

printf("data %d yang dicari ada dalam array\n",k);

}

//jika tidak ditemukan else

{

printf("data tidak ditemukan dalam array\n");

} }

(9)

CODING Program interpolation search

#include<stdio.h>

void main() {

//deklarasi variable

int A[10], i,j,k,tkr,low,high,pos,tm;

//proses penginputan data for(i=0;i<10;i++)

{

printf("data ke-%d:",i+1);

scanf("%d",&A[i]);

}

printf("Masukkan data yang akan anda cari:");

scanf("%d",&k);

//proses pengurutan data for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++) {

if (A[i]>A[j]) {

tkr=A[i];

A[i]=A[j];

A[j]=tkr;

} }

}

//proses pencarian data tm=0;

high=9;

low=0;

do{

pos = (k - A[low]) * (high - low) / A[high] - A[low] + low;

if (A[pos] == k) tm++;

if (A[pos] > k) high = pos-1;

else

if (A[pos] < k) low = pos + 1;

} while(k >= A[low] && k <= A[high]);

if (tm>0) {

printf("data %d yang dicari ada dalam array\n",k);

}

//jika tidak ditemukan else

{

printf("data tidak ditemukan dalam array\n");

} }

Referensi

Dokumen terkait

Kader dapat dibentuk dengan cara memberikan pendidikan lingkungan sejak dini, anak usia sekolah dasar adalah subyek yang selalu ingin tahu, mudah ikut arus, dan semangat yang besar

1) Seksi Program dan Kerjasama mempunyai tugas melakukan penyiapan bahan penyusunan program, rencana kerja dan anggaran, pelaksanaan kerja sama, dan identifikasi

pembudidaya di kelurahan Meruya Selatan atau tepatnya di kawasan Kayon, dengan bapak H.Gupron,…..saya mulai usaha penjualan dan budidaya sejak tahun 1980 sebelum dibangunnya

Adapun dalam hal ini yang menjadi poin-poin yang observasi pada dasarnya diawali dengan argumen yang diberikan oleh informan pada saat wawancara, namun dalam hal ini sebagai

Berdasarkan pengertian dan unsur-unsur citizen jurnalims di atas dapat disimpulkan bahwa media massa sebagai salah satu sarana untuk mendapatkan informasi bagi

bahwa Peraturan Bupati Badung Nomor 70 Tahun 2011 tentang Pembentukan Unit Layanan Pengadaan (ULP) Pemerintah Kabupaten Badung sebagaimana telah diubah dengan

menjadi makanan tradisional lokal dan mengemasnya menjadi sebuah atraksi, hal tersebut dapat menjadi salah satu daya tarik wisata, karena dengan menampilkan

Pupuk cair LCN (Limbah Cair Nanas) yang digunakan dalam penelitian ini adalah limbah yang telah mengalami proses bioremediasi dengan memanfaatkan agen biologi berupa mikroba