search


assalamualaikum wr wb
kali ini saya akan menjelaskan tentang search . Oke langsung saja kita bahas materi ini

Pengertian Searching 
Searching adalah pencarian data dengan cara menelusuri data-data tersebut. Tempat pencarian data dapat berupa array dalam memori(pencarian internal), bisa juga pada file pada external storage(pencarian external).
Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner. Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut (contoh: sequential search). Sebaliknya, pencarian biner digunakan pada data yang sudah dalam keadaan urut (contoh: Binary serach dan interpolation search). Pada Kesempatan ini kita hanya akan membahas tentang pencarian internal menggunakan Array dinamis (pointer).

Metode pencarian dibagi menjadi 2, yaitu:

1. Metode Pencarian Beruntun:

Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir. Metode ini biasa disebut dengan Sequential Search
2. Metode 2Pencarian Bagi Dua:
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini. Metode ini biasa disebut dengan Binary Search


Sequential Search (Pencarian berurutan)
Adalah suatu teknik pencarian data dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.

Algoritma pencarian berurutan dapat dituliskan sebagai berikut :

1. i ← 0
2. ditemukan ← false
3. Selama (tidak ditemukan) dan (i <= N) kerjakan baris 4
4. Jika (Data[i] = x) maka ditemukan ← true, jika tidak i ← i + 1
5. Jika (ditemukan) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan

berikut contoh kasus dalam mencari suatu nilai di array dengan metode sequential

kita akan mencari nilai 17 pada array di bawah ini :
dengan gambaran pseudocode seperti dibawah ini 
oke kita lanjut ke prosesnya :
langkah awal ->

langkah kedua ->

ya begitulah pencarian nilai dengan metode sequential . kesimpulannya dengan metode ini kita mencari nilai tersebut dengan cara berurutan

2. Binary Search

Salah satu syarat agar binary search dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, binary search tidak dapat dilakukan.

Prinsip dari binary search dapat dijelaskan sebagai berikut :

a.Mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data tengah.
b.Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.
c.Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1. Jika data sama, berarti ketemu.
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah sama dengan yang dicari.

berikut contoh kasus dalam mencari suatu nilai di array dengan metode binary

kita akan mencari nilai 17 pada array di bawah ini :

oke kita ke prosesnya langsung 

langkah awal ->
langkah kedua ->
ya begitulah pencarian data dengan menggunakan metode binary . dapat kita ketuhui bahwa dalam metode binary kita harus membagi 2 dulu array tersebut dan kita bandingkan nilai tengah tersebut dengan nilai cari.

contoh pengkodingan search pada javascript 

kali ini contoh pengkodingannya kita terapkan metode jumpsearch


<html>
<head>
<script>
var data=new Array();
function hasilkan(){
var jumlah;
jumlah=20;
for(var i=0; i<jumlah; i++){
data[i]=Math.floor(Math.random()*(100-1))+1;
}
document.getElementById('hasil_angka_awal').innerHTML=data+'<br>';
}
function urutkan(){
document.getElementById('pengurutan').innerHTML="";
for(var a=1; a<data.length; a++){
for(var b=0; b<=a-1; b++){
if(data[a]<data[b]){
var temp=data[a];
data[a]=data[b];
data[b]=temp;
}else if(data[a]==data[b]){
data[a]=data[a];
data[b]=data[b];
}else if(data[a]>data[b]){
data[a]=data[a];
data[b]=data[b];
}
}
document.getElementById('pengurutan').innerHTML +=data+"<br>";
}
return data;
// document.getElementById('hasil').innerHTML=data;
}
// console.log("Found at position :" + jumpSearch(43));
// console.log("Found at position :" + jumpSearch(array, 55));
function jumpSearch(){
var waktu_mulai=performance.now();
var nilai_cari=document.getElementById('pencarian').value;
var array = urutkan();
var jumlah = array.length;
var langkah = Math.floor(Math.sqrt(jumlah));
var index = Math.min(langkah, jumlah)-1;
// console.log(index);
var batas_bawah = 0;
while (array[Math.min(langkah, jumlah)-1] < nilai_cari)
{
batas_bawah = langkah;
console.log(langkah);
langkah += langkah;
console.log(langkah);
console.log(batas_bawah);
if (batas_bawah >= jumlah){
document.getElementById('hasil').innerHTML='TIDAK DITEMUKAN';
var waktu_selesai=performance.now();
var totwaktu=parseFloat((waktu_mulai-waktu_selesai)/1000).toFixed(5);
document.getElementById('waktu').innerHTML='waktu komputasi : '+totwaktu+" detik"
return -1;
}
}
// console.log(lowerBound);
var batas_atas = Math.min(langkah, jumlah);
console.log(batas_atas);
console.log(batas_bawah);
while (array[batas_bawah] < nilai_cari)
{
batas_bawah++;
console.log(batas_bawah);
if (batas_bawah == batas_atas){
document.getElementById('hasil').innerHTML='TIDAK DITEMUKAN';
var waktu_selesai=performance.now();
var totwaktu=parseFloat((waktu_mulai-waktu_selesai)/1000).toFixed(5);
document.getElementById('waktu').innerHTML='waktu komputasi : '+totwaktu+" detik"
return -2;
}
}
if (array[batas_bawah] == nilai_cari){
console.log(batas_bawah);
document.getElementById('hasil').innerHTML='DATA DITEMUKAN DI INDEX '+batas_bawah;
var waktu_selesai=performance.now();
var totwaktu=parseFloat((waktu_mulai-waktu_selesai)/1000).toFixed(5);
document.getElementById('waktu').innerHTML='waktu komputasi : '+totwaktu+" detik"
return batas_bawah;
}
document.getElementById('hasil').innerHTML='TIDAK DITEMUKAN';
var waktu_selesai=performance.now();
var totwaktu=parseFloat((waktu_mulai-waktu_selesai)/1000).toFixed(5);
document.getElementById('waktu').innerHTML='waktu komputasi : '+totwaktu+" detik"
return -2;
}
</script>
</head>
<body>
<button onclick="hasilkan()">hasilkan</button><br>
<label>angka awal</label><br>
<label id="hasil_angka_awal">0</label>
<button onclick="urutkan()">urutkan</button><br>
<label id="pengurutan"></label>
<label>pencarian</label>
<input type="text" id="pencarian">
<button onclick="jumpSearch()">cari</button>
<label id="hasil"></label>
<label id="waktu"></label>
</body>
</html>



oke cukup sekian penjelasan saya dalam materi search ini .
wassalamualaikum wr wb

Komentar

Postingan Lainnya

GRAPH

TREE

STACK DAN QUEUE