Saturday, May 28, 2011

Contoh Listing Linier Searching dan Binary Searching

Assalamu'alaikum...

Ini contoh listing program pake c++.

For Linear Searching :

  
Yang ini lumayan simple. Digunakan perulangan for buat cari data dari indeks 0 sampai indeks 7. Kalau ada data yang sama dengan yang kita cari, flag =1, true.


Contoh untuk Binary Searching :
 
 
Yang ini perulangannya sedikit lebih rumit. Ya. Sedikit, okay.
Variable yang kita butuhkan itu, pertama buat array, kita pake nama variable data. Kita juga harus tau banyaknya data yang ada di dalam array tersebut, kita sebut n. Seperti yang kita tau, harus ada data tengah, that’s m. Dan tentu saja variable cari. Buat ngebantu, kita bikin variable l dan r buat cari nilai median (m)nya. Juga variable ktm, buat penanda true or false, udah ketemu apa belum data yang kita cari itu, default= false atau 0.

Selanjutnya proses perulangannya.
Selama nilai l <= r dan nilai ktm=0, kita lakukan proses:
Cari mediannya terlebih dahulu, m= (l+r)/2.
Jika isi data/value yang ada di indeks m, atau data[m] = data yang kita cari (cari), nilai ktm berubah jadi 1, true.
Else, jika tidak ada 2 kemungkinan lagi.
Jika cari < data[m], kita cari di setengah bagian pertama atau bagian kiri, dengan merubah nilai r menjadi m dikurangi 1, m-1.
Jika syarat itu juga salah, kemungkinannya cuma 1, cari > data[m], kita cari di setengah bagian selanjutnya atau bagian kanan, dengan merubah niali l menjadi m ditambah 1, m+1.

Kalau dalam pencarian pertama data[m] sudah sama dengan cari, maka proses dihentikan, karena syarat perulangannya tidak lagi terpenuhi (while (l<=r && ktm==0)). You see, if (data[m] == cari), ktm berubah jadi 1. Langsung loncat ke proses selanjutnya, if (ktm==1) cetak “data ada”. End.

Kalau yang kita dapat adalah kondisi yang kedua, cari lebih kecil dari data[m], kita ubah r=m-1. Atau yang ketiga, cari lebih besar dari data[m], kita ubah l=m+1. Lalu ulangi lagi dari proses penghitungan median. Sampai syarat perulangannya sudah tidak terpenuhi, (while (l<=r && ktm==0)) jika ktm sudah berubah menjadi 1, menghasilkan “data ada”, atau bisa juga jika ktm masih tetap bernilai 0, tapi nilai l sudah lebih besar dari nilai r, berarti data yang kita cari tidak ada dalam array tersebut. Cetak “tidak ada”.

Dan output dari listing di atas bisa dilhat di bawah...


That’s it. I know we can do it. :)




Next ingatkan aku buat belajar listing program sorting.
See ya.

0 comments:

Post a Comment