“Searching (Binary)”
Yo sobat Mahasiswa, mari kita lanjutkan materi koding yaitu "Searching Binary". Silahkan juga lihat Contoh Seaching Sequential pada postingan sebelumnya.
- Searching Binary
Pencarian biner adalah algoritma pencarian yang digunakan secara luas yang membutuhkan array untuk diurutkan sebelum pencarian diterapkan. Ide utama di balik algoritma ini adalah untuk tetap membagi array menjadi dua (membagi dan mengatasi) sampai elemen ditemukan, atau semua elemen sampai habis.
Biner bekerja dengan membandingkan item tengah array dengan target data, jika cocok, itu mengembalikan true (boolean benar/salah), jika jangka menengah lebih besar dari target, pencarian dilakukan di sub-array kiri. Jika jangka menengah kurang dari target, pencarian dilakukan dalam sub-array yang tepat.
Contoh:
awal = 0; akhir = 7; bflag = 0;
while (b_flag == 0 && awal <= akhir)
{
tengah = (awal + akhir) / 2;
if (data[tengah] == cari)
{
b_flag = 1;
break;
}
else if (data[tengah] < cari)
awal = tengah + 1;
else
akhir = tengah - 1;
}
if (b_flag == 1)
cout << "\nData ditemukan pada posisi ke-" << tengah+1 << endl;
else
cout << "\nData tidak ditemukan\n";
Penjelasan:
Dalam algoritma searching biner diatas, dideklarasikan variabel awal, akhir, tengah, dan b_flag dimana awal diidentifikasikan nilainya adalah 0, akhir nilainya 7, tengah nilainya adalah awal + akhir / 2, dan b_flag nilainya 0. Lalu program akan melakukan perulagan while dimana akan dilakukan apabila kondisi terpenuhi, yaitu apabila b_flag nilainya adalah 0 (b_flag == 0) dan awal kurang lebih sama dengan akhir (awal <= akhir). Dalam algoritma perulangan while terdapat rumus perhitungan tengah, dan algoritma penyeleksian kondisi.
Untuk perhitungan, nilai tengah merupakan penggerak dari array data, dimana rumus tengah akan dibandingkan dengan variabel cari dan akan terus dijalankan hingga nilai yang ditambahan/dikurangkan ke awal/akhir sama, dan perulangan berhenti.
Dalam algoritma penyeleksian kondisi, jika data[tengah] sama dengan cari (data[tengah] == cari), maka kondisi 1 akan dijalankan, apabila data[tengah] kurang dari cari (data[tengah] < cari), maka kondisi 2 akan dijalankan, namun apabila kedua kondisi tidak terpenuhi maka kondisi 3 yang dijalankan.
Setelah perulangan, maka untuk mengeluarkan hasil dari proses diatas maka diperlukan sebuah algoritma penyeleksian kondisi dimana jika b_flag sama dengan 1 (b_flag == 1) maka kondisi 1 akan dijalankan, dengan perintah "Data ditemukan pada posisi ke-....", apabila kondisi 1 tidak terpenhi maka kondisi 2 akan dijalankan, dengan perintah "Data tidak ditemukan".
Dalam algoritma searching biner diatas, dideklarasikan variabel awal, akhir, tengah, dan b_flag dimana awal diidentifikasikan nilainya adalah 0, akhir nilainya 7, tengah nilainya adalah awal + akhir / 2, dan b_flag nilainya 0. Lalu program akan melakukan perulagan while dimana akan dilakukan apabila kondisi terpenuhi, yaitu apabila b_flag nilainya adalah 0 (b_flag == 0) dan awal kurang lebih sama dengan akhir (awal <= akhir). Dalam algoritma perulangan while terdapat rumus perhitungan tengah, dan algoritma penyeleksian kondisi.
Untuk perhitungan, nilai tengah merupakan penggerak dari array data, dimana rumus tengah akan dibandingkan dengan variabel cari dan akan terus dijalankan hingga nilai yang ditambahan/dikurangkan ke awal/akhir sama, dan perulangan berhenti.
Dalam algoritma penyeleksian kondisi, jika data[tengah] sama dengan cari (data[tengah] == cari), maka kondisi 1 akan dijalankan, apabila data[tengah] kurang dari cari (data[tengah] < cari), maka kondisi 2 akan dijalankan, namun apabila kedua kondisi tidak terpenuhi maka kondisi 3 yang dijalankan.
Setelah perulangan, maka untuk mengeluarkan hasil dari proses diatas maka diperlukan sebuah algoritma penyeleksian kondisi dimana jika b_flag sama dengan 1 (b_flag == 1) maka kondisi 1 akan dijalankan, dengan perintah "Data ditemukan pada posisi ke-....", apabila kondisi 1 tidak terpenhi maka kondisi 2 akan dijalankan, dengan perintah "Data tidak ditemukan".
- Contoh Program
#include <iostream> #include <windows.h> using namespace std; main() { int n, i = 0; string nama[10], x; cout << " Masukan banyak data : "; cin >> n; for (i = 0; i < n; i++) { cout << " Orang " << i+1 << " = "; cin >> nama[i]; } system("cls"); cout << " Masukan nama yang dicari : "; cin >> x; i = 0; ulang: if (i != n) { if (nama[i] == x) cout << " Nama yang dicari ditemukan pada data " << i+1; else { i++; goto ulang; } } else { cout << " Data tidak ada\n"; } return 0; }
Sobat bisa mencoba kodingan diatas dan memahaminya. Contoh programnya sendiri memiliki banyak variasi tergantung dari kreativitas oleh penulis program.
Sekian dari postingan blog kali ini. Semoga artikel ini dapat bermanfaat bagi sobat baik untuk mengerjakan tugas, menambah ilmu, maupun untuk sekedar menambah wawasan untuk media pembelajaran koding.
0 komentar:
Posting Komentar