. ………………………………………………………………
NPM.
I. JUDUL PERCOBAAN
SEARCHING
PENGERTIAN SEARCHING
Searching adalah tindakan mengambil data dari kumpulan data berdasarkan kunci
(key) atau referensi data. Di kehidupan sehari-hari, kita sering berurusan dengan
pencarian. Misalnya, mencari nomor telepon seseorang di buku telepon, atau mencari
kata pada kamus, dan masih banyak lagi. Pencarian sering dilakukan dalam aplikasi
komputer. Misalnya, jika ingin menghapus atau mengubah data/record tertentu dalam
suatu file, harus terlebih dahulu menentukan apakah data tersebut ada dalam file. Jika
ada, maka data dapat dihapus atau diubah.
Algoritma ini mencari angka 2 dengan mengecek setiap elemen pada array. Ketika
sudah ditemukan maka proses pencarian dapat diakhiri.
Binary Search,
Binary search adalah Data yang ada harus diurutkan terlebih dahulu berdasarkan
suatu urutan tertentu yang dijadikan kunci pencarian. Adalah teknik pencarian data
dalam dengan cara membagi data menjadi dua bagian setiap kali terjadi proses
pencarian. Prinsip pencarian biner adalah:
Data diambil dari posisi 1 sampai posisi akhir N Kemudian cari posisi data tengah
dengan rumus: (posisi awal + posisi akhir) / 2. Kemudian data yang dicari
dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih
besar? Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi
tengah + 1 Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah
posisi tengah - 1 Jika data sama, berarti ketemu.
Langkah pertama yang akan kita lakukan adalah menyusun value dari array tersebut
agar tersusun secara ascending, pada kasus ini menggunakan algoritma bubble
sort untuk menyusunnya, sehingga didapatlah susunan array seperti ini
selanjutnya, kita baru akan memulai algoritma binary search, langkah pertama kita
perlu menentukan 4 hal yaitu left,right,mid,key.
Left digunakan sebagai batas bawah pencarian. Pada langkah ini nilai left adalah
index ke 0.
Right digunakan sebagai batas atas pencarian. Pada langkah ini nilai right adalah
index ke 5.
Mid ditentukan otomatis dari panjang array yang kita punya, pada contoh ini ada 6
index array yang berarti nilai mid adalah 3 dan mengacu pada index ke 2 dari array
yang kita punya.
Sedangkan KEY adalah nilai yang akan kita cari, anggap saja kita akan mencari
angka 4 dari value array tsb.
Langkah selanjutnya kita akan menentukan apakah value array index ke mid (3) sama
dengan key (4)? ternyata tidak.
lanjut, apakah array index ke mid (3) lebih kecil dari key (4)? jika iya maka kita akan
mengubah parameter left menjadi mid +1. Namun jika tidak kita akan mengubah
right menjadi mid -1.
pada kasus ini value array ke mid lebih kecil dibanding key jadi kita akan mengubah
left menjadi mid+1 yaitu 2+1 = 3.
akan mengulang lagi algoritmanya, kali ini nilai tengahnya adalah array index ke 4.
apakah array index ke 4 (5) sama dengan key (4)? ternyata tidak.
lanjut,apakah array index ke 4 (5) lebih kecil daripada key (4)? ternyata tidak, jadi
kita akan mengubah nilai right menjadi mid-1 yaitu 3. sehingga sisa List kita hanya
tersisa 1 yaitu array index ke 3 dengan value 4.
saat ini right dan left berada di satu tempat, sehingga nilai left,right dan mid berada
pada satu posisi.
sampai di tahap ini kita akan kembali mengecek, apakah array index ke mid (4) sama
dengan key (4). jika iya maka algoritma selesai dijalankan dan hasil pencarian
bernilai true.
namun jika ternyata sampai di sini key masih belum ketemu, maka posisi left atau
right akan kembali berubah, dan pastinya left menjadi lebih besar daripada right maka
algoritma akan berhenti dan hasil pencarian dianggap false (tidak ketemu).
IV. PROSEDUR PERCOBAAN
Berdasarkan Gambar 5.1.3.b Percobaan 1-3 Sequntial Searching dapat di lihat bahwa
output yang di tampilkan adalah “ tidak ketemu” yang merupakan hasil dari fungsi
cout pada baris ke 18 pada source code , output tidak ketemu di karenakan nilai yang
di hasilkan lebih besar dari 5
5.2 Binary Search
Berdasarkan Gambar 5.2.1.a Source Code Percobaan 3-2 Binary Searching pada
baris ke 6 terdapat deklarasi variabel n dengan tipe data integer dan nilai awalnya
adalah 10 ,pada baris ke 7 terdapat deklarasi int data[n] yang di gunakan untuk
mendeklarasi dan menginisiasi array “data” dengan panjang “n” 8,pada baris ke 8
mendeklarasikan int l,r,m,pada baris ke 9 variabel l di inisiasi dengan nila 0,pada
baris ke 10 variabel r di inisiasi dengan n-1, pada baris ke 11 mendeklarasikan int
‘flag’ yang di gunakan untuk menentukan apakah nilai di temukan atau tidak,pada
baris ke 12 mendeklarasikan int cari yang akan menyimpan nilai yang akan di
cari,pada baris ke 14 terdapat tedapat perulangan while yang akan terus berjalan
selama l kurang dari r dan flag adalah 0 yang berarti nilai yang di cari belum di
temukan,pada baris ke 15 terdapat m = (l+r)/2; yang merupakan indeks tengah,pada
baris ke 16 terdapat cout yang akan mencetak indekstengah ‘m’ pada baris ke 17
terdapat perulangan if yang akan memeriksa apakah elemen yang di temukan di
indeks m sama dengan nilai yang di cari,pada baris ke 18 terdapat flag = 1 jika
elemen yang di cari di temukan maka flag akan di ubah menjadi 1,pada baris ke 19
dan 20 terdapat pernyataan else if yang akan di gunakan untuk memeriksa apakah
nilai yang di cari kurang dari indeks m jika iya maka program akan mencetak cari
dari kiri dan mengubah nilai r menjadi m-1 ,pada baris ke 23hingga ke 25 terdapat
else yang jika kondisi sebelumny memenuhi maka akan mecnetak dari kanan dan
mengubah nilai l menjadi m+1,pda baris ke 28 terdapat if (flag= 1) yang di gunakan
untuk memeriksa apakah variabel flag adalah 1,pada baris ke 29 terdapat fungsi cout
yang akan menampilkan kata ‘ketemu’ jika elemen yang di cari telah di
temukan ,pada baris ke 30 terdapat fungsi ‘else’,pada baris ke 31 terdapat fungsi cout
yang akan menampilkan ‘tidak ketemu’ jika elemen yang di cari tidak di
temukan,pada baris ke 32 terdapat return 0 yang berfungsi untuk mengakhiri
program.
5.2.1.b Output Percobaan 3-2 Binary Searching
Berdasarkan Gambar 5.2.1.b Output Percobaan 3-2 Binary Searching dapat di lihat bahwa
output yang di hasilkan adalah cari data dari kanan data tengah : 4,cari data ari kiri ,data
tengah 7 ,data dari tengah ketemu, ,pada output di atas di tampilkan proses pencarian data di
mana sebelumya data dibagi dua dan ditentukan nilai tengahnya, lalu program menentukan
lokasi data hingga pada akhirnya data ketemu. Adapun source code yang melaksanakan
fungsi pencarian ini adalah pada baris ke – 14 hingga baris ke – 31.
5.2.2 Percobaan 3-2: Binary Searching interpolation
5.2.2.a. Source Code Percobaan 3-2 Binary Searching interpolation
Berdasarkan Gambar 5.2.2.b Output Percobaan 3-2 Binary Sarch interpolation dapat
di lihat bahwa output yang di hasilkan adalah 6,7,dan ketemu,pada angka 6 di
dapatkan dari source code baris ke 14 dengan kondisi while (cari > data[low]
&& cari <= data[high]) , selanjutnya angka 7 ngan kondisi percabangan if yang
terpenuhi sehingga nilai low yang dari 0 berubah menjadi pos + 1 atau 7….
VI. KESIMPULAN
SEGERA