SEARCHING

kali ini saya akan sedikit berbagi ilmu tentang search engine berproses, langsubg aja baca dibaca
Searching adalah proses pencarian data dalam array menggunakan sequential dan binary. Sequential digunakan ketika data yang dicari tidak berurutan dan binary sebaliknhya.
1.       Sequential
Sequential dilakukan denhgan cara membandingkan data yang akan dicari menggunakan array, contoyhnya seperti dibawah ini :
0
1
2
3
4
5
X
77
34
21
87
120
12

Data diatas sengaja saya buat acak agar kita bisa langsung praktek dan bias memahaminya, anggap saja kita akan mencari angka 87. Pertama kita buat dulu pseudeucodenya
1.       Index = 0
2.       Input kriteria
3.       While kriteria tidak sama dengan X[index]
4.       Index++
5.       Jika kriteria sama dengan X[index]
6.       Output ketemu = X[index]
Langsung saja gan ini prosesnya
1.       Apakah kriteria = 87 tidak sama dengan X[0] (77)
Ya maka index++
2.       Apakah kriteria = 87 tidak sama dengan X[1] (34)
Ya maka index++
3.       Apakah kriteria = 87 tidak sama dengan X[2] (21)
Ya maka index++
4.       Apakah kriteria = 87 tidak sama dengan X[3] (87)
Tidak
5.       Maka ketemu  = X[3] (87)
Gimana gan udah faham belum??? Mudah kan
2.       Binary search
Binary search dilakukan dengan cara mengurutkan data pada array, proses pencariannya dengan cara membandingkan nilai tengah data array. Berikut contoh arraynya
0
1
2
3
4
5
6
X
12
55
59
67
72
113
132

Dari data array di atas kita akan mencari 72. Kita harus mencari data tengah terlebih dahulu, tetapi jika data array berjumlah ganjil itu akan mempercepat proses pencarian karena tak harus mencari data tengah dengan rumus. Berikut cara mencari data tengah array yang berjumlah gelap
data tengah = (index awal + index akhir)/2 = ….
data tengah = (0 + 6)/2 = 6 / 2 = 3
dari cara di atas dapat kita ketahui bahwa data tengah array adalah index ke 3
0
1
2
3
4
5
6
X
12
55
59
67
72
113
132
awal
Tengah
akhir
Untuk mempermudah memahami proses pencarian lkita buat pseudeucode dulu
1.       Tengah = (index awal + index akhir)/2 =
2.       Input kriteria
3.       Jika kriteria > tengah, maka nilai awal = tengah +1
4.       Jika kriteria < tengah, maka nilai awal = tengah -1
5.       Jika kriteria == tengah, ketemu tengah

Sekarang mari kita berproses
1.       Tengah X[3]
2.       Kriteria = 72
3.       72 > 67
Awal = tengah +1
4
5
6
72
113
132
Awal
akhir
4.       Tengah = (4 + 6)/2 = 5
4
5
6
72
113
132
awal
Tengah
akhir
5.       72<113
Akhir = tengah -1
4
72
Tengah
nah apabila penjelasan di atas kurang difahami, dibawah ini saya mencatumkan contoh kodingan untuk searching
<!DOCTYPE html>
<html>
<head>
<title>PENCARIAN AAAA</title>
<script type="text/javascript">
var angka=[];
function Random()
{
for(var i = 0; i < 50; i++)
{
angka[i] = Math.floor(Math.random()*(100 ));
document.getElementById("txt_keluar").innerHTML += angka[i]+", ";
}
}
function AmbilArray(sort)
{
for(var i= 0; i < angka.length; i++)
document.getElementById(sort).innerHTML += angka[i] + ", "
}

function Insert()
{
for(var o = 0; o < angka.length; o++)
{
var nomer = angka[o]
for(var k = o - 1; k > -1 && angka[k] > nomer; k--)
{
angka[k + 1] = angka[k]
}
angka[k + 1] = nomer
}
AmbilArray("lbl_urut")
}
function Menampilkan(hasil, tengah)
{
if (hasil == true)
  {
  document.getElementById("lbl_hasil").innerHTML="Data ditemukan pada index ke- "+tengah;
  }
  else
  {
  document.getElementById("lbl_hasil").innerHTML="Data tidak ditemukan"
  }
}
function RecrusiveBinarySearch(DataPencarian)
{
var Mulai = performance.now();
Insert();
var Awal = 0;
var Akhir = angka.length - 1;
var Tengah
var Hasil = false;

while(Awal <= Akhir)
{
Tengah = Math.floor((Akhir + Awal)/2);
if(angka[Tengah] == DataPencarian)
{
Hasil = true;
break;
}
else if(DataPencarian < angka[Tengah])
{
Akhir = Tengah - 1;
}
else
{
Awal = Tengah + 1
}
}
if(Hasil == true)
{
document.getElementById("out_hasil").innerHTML = "Data Ditermukan pada Indeks ke - "+Tengah;
}
else
{
document.getElementById("out_hasil").innerHTML = "Data Tidak Ditemukan"
}
var Berhenti = performance.now();
var Waktu = parseFloat((Berhenti - Mulai)/1000).toFixed(5);
document.getElementById("out_waktu").innerHTML = "Waktu Pencarian : " + Waktu + "detik"
}
</script>
</head>
<body>
<input type="button" value="Klik Untuk Acak Angka" onclick="Random()">
<br><br>
<label id="txt_keluar">RANDOM DATA : </label>
<br><br>
<label> Urut dulu : </label>
<label id="lbl_urut"></label><br><br>
<label>CARI DATA : </label>
<input type="text" placeholder="--masukkan angka--" id="tx_masukdata">
<input type="button" value="LAKUKAN PENCARIAN" onclick="RecrusiveBinarySearch(tx_masukdata.value)"><br>
<br>
<label id="out_hasil"></label>
<br>
<label id="out_waktu"></label>
</form>

</body>
</html>




Sekian dari saya, apabila ada kekurangan dan tidak bias difahami bias langsung komen. terimakasih

Komentar

Postingan populer dari blog ini

GRAPH

ARRAY 1 DIMENSI