Algoritma Search
Assalamulaikum Wr.Wb bagaimana hari anda? Baik? alhamdulillah kalau begitu.
Baiklah saya akan menjelaskan tentang algoritma sequential search dan binary search.
Mungkin masih ada yg belum mengerti tentang dua istilah diatas. nah disini saya akan sedikit membagi ilmu yg saya dapat kepada anda sekalian semua.
APA ITU SEQUENTIAL SEARCH?
sequential search adalah metode untuk menemukan nilai target dalam daftar. Ini
secara berurutan memeriksa setiap elemen dari daftar untuk nilai target sampai
ada kecocokan atau sampai semua elemen dicari. Pencarian berikutnya adalah
metode untuk menemukan nilai target dalam daftar. Ini secara berurutan
memeriksa setiap elemen dari daftar untuk nilai target sampai ada kecocokan
atau sampai semua elemen telah dicari.
Algoritmanya deskriptifnya adalah :
1. Input data yang dicari (x)
2. Bandingkan x dengan data ke-1 sampai n
3. Jika ada data yang sama dengan x maka cetak pesan
“ada”
4. Jika tidak ada data yang sama maka cetak pesan “tidak
ada”
saya akan berikan contoh dibawah. kita disuruh untuk mencari dengan nilai 29
Cara mengerjakannya adalah
1. 29 == x[0] = tidak ada = indeks ++
2. 29 == x[1] = tidak ada = indeks ++
3. 29 == x[2] = ada = tampilkan
APA ITU BINARY SEARCH?
Binary search, juga dikenal sebagai half-interval search,
logarithmic search, atau binary chop, adalah algoritma pencarian yang menemukan
posisi nilai target dalam array yang diurutkan. Pencarian biner membandingkan
nilai target dengan elemen tengah dari array; Jika mereka tidak setara,
setengah di mana target tidak dapat dibohongi dihilangkan dan pencarian
berlanjut pada sisa setengahnya sampai berhasil. Jika pencarian diakhiri dengan
setengah sisanya kosong, targetnya tidak ada dalam array.
Algoritma dari binary search adalah:
1. Tentukan posisi awal = 0 dan posisi akhir = N – 1
2. Hitung posisi tengah = (posisi awal + posisi akhir) / 2
3. Bandingkan data yang dicari dengan elemen posisi tengah
4. Jika data yang dicari sama maka catat posisi dan cetak
kemudian berhenti
5. Jika lebih besar maka akan dilakukan pencarian kembali ke
bagian kiri dengan nilai posisi awal = posisi tengah + 1 dan posisi akhir tetap
kemudian ulangi mulai poin 2
6. Jika nilai datanya lebih kecil maka akan dilakukan pencarian
kembali ke bagian kiri dengan nilai posisi awal tetap dan nilai posisi akhir =
posisi tengah – 1 kemudian ulangi mulai poin 2.
Contoh :
kita akan mencari nilai bilangan 23, pertama kita cari dulu index tengahnya dengan menggunakan algoritma atau tata cara sebelumnya,
-jumlah data dalam array ada 8 jadi kita kurangi 1 menjadi 7 dan dibagi 2 ketemu 3,5 lalu kita sederhanakan saja menjadi 3.
-nah setelah ketemu index ke 3 dengan nilai 45 maka kita akan persempit lagi pencariannya
- nilai 45 lebih besar dari 23 maka kita gunakan algoritma ke 5 dengan menambahkan index tengah dengan 1 maka hasilnya menjadi 4 dan lalu kita bagi 2(algoritma 2) dengan hasil index 2 maka kita akan mendapat nilai yg kita cari yaitu 23.
pengerjaan lain.
1. Cari x[23]
-jumlah data dalam array ada 8 jadi kita kurangi 1 menjadi 7 dan dibagi 2 ketemu 3,5 lalu kita sederhanakan saja menjadi 3.
-nah setelah ketemu index ke 3 dengan nilai 45 maka kita akan persempit lagi pencariannya
- nilai 45 lebih besar dari 23 maka kita gunakan algoritma ke 5 dengan menambahkan index tengah dengan 1 maka hasilnya menjadi 4 dan lalu kita bagi 2(algoritma 2) dengan hasil index 2 maka kita akan mendapat nilai yg kita cari yaitu 23.
pengerjaan lain.
1. Cari x[23]
---Binary Search---
-->0 + 7/2 = 3,5 = 3
-->0 + 7/2 = 3,5 = 3
-->0 + 4/2 = 2
Mungkin itu saja yg dapat saya sampaikan kali ini, saya dapat menyimpulkan bahwa dari kedua cara diatas ada yg memiliki kelebihan maupun kekurangan masing2 tergantung berapa banyaknya data yg dicari.
berikut adalah contoh script dari search :
<!DOCTYPE html>
<html>
<head>
<script>
var arraynya = new Array()
function dtrndm()
{
for(var i = 0; i < 50; i++)
{
arraynya[i] = Math.floor(Math.random()*(100 ));
document.getElementById("randomdata").innerHTML += arraynya[i]+", ";
}
}
function takearray(sort)
{
for(var i= 0; i < arraynya.length; i++)
document.getElementById(sort).innerHTML += arraynya[i] + ", "
}
function prosesnya()
{
for(var y = 0; y < arraynya.length; y++)
{
var nomer = arraynya[y]
for(var p = y - 1; p > -1 && arraynya[p] > nomer; p--)
{
arraynya[p + 1] = arraynya[p]
}
arraynya[p + 1] = nomer
}
takearray("urut")
}
function search(arrayToSearch, valueToSearch)
{
var mulai = 0;
var selesai = arrayToSearch.length -1;
while(mulai <= selesai)
{
var middle = Math.ceil((selesai + mulai)/2)
var middleValue = arrayToSearch[middle];
if(middleValue === valueToSearch)
{
return middle;
}
else if(valueToSearch < middleValue)
{
selesai = middle -1;
}
else
{
mulai = middle +1 ;
}
}
return middle;
}
function tampil(cari)
{
var Mulai = performance.now(cari);
var a = arraynya;
var b = cari;
var mid = search(a, b);
if (mid != -1)
{
alert("data telah ditemukan di indeks :"+mid);
document.getElementById("hasil").innerHTML="Data ditemukan pada index ke- "+mid;
}
else
{
alert("Maaf data tidak ditemukan");
document.getElementById("hasil").innerHTML="Data tidak ditemukan"
}
var Berhenti = performance.now();
Waktu = parseFloat((Berhenti - Mulai)/10000).toFixed(5);
document.getElementById("out_waktu").innerHTML = "Waktu Pencarian : " + Waktu + "detik"
}
</script>
</head>
<body>
<center>
<h1>Search</h1>
</center>
<form>
<label id="randomdata">Masukkan data </label>
<br>
<input type="button" value="Random" onclick="dtrndm()">
<br>
<label id="urut">Data Di Urutkan </label>
<br>
<input type="button" value="Urutkan" onclick="prosesnya()">
<br>
<input type="text" size="12" id="cari">
<input type="button" value="Proses" onclick="tampil(cari.value)">
<br>
<label id="hasil"></label>
<br>
<label id="out_waktu"></label>
</form>
</body>
</html>
dan berikut adalah screenshot dari hasilnya
sekian dari saya wassalamualaikum Wr.Wb.
|
Komentar
Posting Komentar