Makalah Sistem Berkas Binary Search
Makalah Sistem Berkas
Binary Search
Disusun oleh:
Nama: Alifian Odi Mahendra
(2015-31-165)
Reski Yuli Defrianto
(2015-31-228)
Hendy Augustama
(2015-31-032)
Anita Oktavianti
(2015-31-039)
Ubed Sihombing
(2015-31-094)
Andini Prisilya Rasyid
(2015-31-014)
Inggrit Ivana Rumagit
(2015-31-231)
Kelas: E
SEKOLAH TINGGI TEKNIK – PLN
JAKARTA
2017
1
DAFTAR ISI
BAB 1 PENDAHULUAN ........................................................................................... 3
1.1
Latar Belakang........................................................................................................... 3
1.2
Rumusan Masalah ..................................................................................................... 4
1.3
Batasan Masalah ....................................................................................................... 4
1.4
Tujuan ....................................................................................................................... 4
1.5
Manfaat ..................................................................................................................... 4
BAB 2 PEMBAHASAN .............................................................................................. 5
2.1
Konsep....................................................................................................................... 5
2.2
Algoritma dari Binary search ..................................................................................... 9
2.3
Contoh Studi Kasus ................................................................................................... 9
2.4
Program................................................................................................................... 10
2.5
Output Program ...................................................................................................... 16
BAB 3 PENUTUP...................................................................................................... 19
3.1
Kesimpulan .............................................................................................................. 19
3.2
Saran ....................................................................................................................... 19
DAFTAR PUSTAKA ................................................................................................ 20
2
BAB 1
PENDAHULUAN
1.1
Latar Belakang
Seiring dengan berkembangnya Teknologi Informasi, yang membutuhkan
kecepatan dan ketepatan dalam berbagai aspek kehidupan. Kita dituntut untuk
bergerak cepat dalam segala hal, termasuk juga dalam bidang komunikasi informasi.
Salah satunya dalam bidang statistic yang meliputi pencarian data. Sehingga banyak
programer yang membuat program yang mempermudah kerja dalam bidang statistika
dan informasi, yakni dalam hal pencarian data. Dari program pencarian data terdapat
algoritma-algoritma yang digunakan untuk mencari sebuah data, salah satunya adalah
binary search.
Binary search adalah algoritma pencarian untuk data yang terurut. Pencarian
dilakukan dengan cara menebak apakah data yang dicari berada ditengah-tengah data,
kemudian membandingkan data yang dicari dengan data yang ada ditengah. Bila data
yang ditengah sama dengan data yang dicari, berarti data ditemukan. Namun, bila
data yang ditengah lebih besar dari data yang dicari, maka dapat dipastikan bahwa
data yang dicari kemungkinan berada disebelah kiri dari data tengah dan data
disebelah kanan data tengah dapat diabai. Upper bound dari bagian data kiri yang
baru adalah indeks dari data tengah itu sendiri. Sebaliknya, bila data yang ditengah
lebih kecil dari data yang dicari, maka dapat dipastikan bahwa data yang dicari
kemungkinan besar berada disebelah kanan dari data tengah. Lower bound dari data
disebelah kanan dari data tengah adalah indeks dari data tengah itu sendiri ditambah
Demikian seterusnya.
3
1.2
Rumusan Masalah
a) Bagaimana cara mencari data dengan cepat dan ukurat?
1.3
Batasan Masalah
Pada makalah ini akan dibahas mengenai salah satu metode pencarian, yaitu
Binary Search. Pada sesi ini hanya akan membahas mengenai:
a) Pengertian/konsep binary search
b) Algoritma binary search
c) Contoh study kasus
d) Contoh program binary search
1.4
Tujuan
a) Mempermudah pekerjaan manusia dalam bidang Informasi.
b) Mempermudah pekerjaan manusia dalam bidang Statistik.
c) Mempermudah pekerjaan manusia dalam bidang komputerisasi lainya
terutama dalam bidang pencarian data.
1.5
Manfaat
a) Pekerjaan manusia dalam bidang teknologi jadi lebih mudah, cepat, dan
efisien waktu.
4
BAB 2
PEMBAHASAN
2.1
Konsep
Pengertian
Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik
untuk menemukan nilai tertentu dalam sebuah larik (array) linear, dengan
menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak
secara ekslusif dalam ilmu komputer.
Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah
pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau
sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Pada
intinya, algoritma ini menggunakan prinsip divide and conquer, dimana sebuah
masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian
yang lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses
satu bagian dari tabel itu saja.Algoritma ini bekerja dengan cara memilih record
dengan indeks tengah dari tabel dan membandingkannya dengan record yang hendak
dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi
dua dan bagian tabel yang bersesuaian akan diproses kembali secara rekursif.
Penerapan terbanyak dari pencarian biner adalah untuk mencari sebuah nilai
tertentu dalam sebuah list terurut. Jika dibayangkan, pencarian biner dapat dilihat
sebagai sebuah permainan tebak-tebakan, kita menebak sebuah bilangan, atau nomor
tempat, dari daftar (list) nilai.
Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list;
oleh karena nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau
sesudah nilai yang di tengah tersebut, dan pencarian selanjutnya dilakukan terhadap
setengah bagian dengan cara yang sama.
5
Metoda Pencarian Biner (Binary Search) hanya bisa diterapkan jika data array
sudah terurut. Pengurutan Array bisa menggunakan jenis sorting descending atau
asscending.
Keunggulan
Keunggulan utama dari algoritma binary search adalah kompleksitas algoritmanya
yang lebih kecil daripada kompleksitas algoritma sequential search. Hal ini
menyebabkan waktu yang dibutuhkan algoritma binary search dalam mencari sebuah
record dalam sebuah table, lebih kecil daripada waktu yang dibutuhkan algoritma
sequential search.
Kelemahan
Data harus disorting dahulu dan algoritma lebih rumit, tidak baik untuk data berantai.
algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik
menaik maupun menurun.
Fungsi
Pencarian Biner (Binary Search) dilakukan untuk :
•
Memperkecil jumlah operasi pembandingan yang harus dilakukan antara data
yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data
yang sangat besar ukurannya.
•
Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara
berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak
dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
•
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah
terurut, misalkan terurut menaik.
6
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
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.
Untuk lebih jelasnya, perhatikan contoh pada sekumpulan data berikut:
Data yang dimasukan:
12
15
57
8
37
2
25
5
1
2
3
3
5
6
7
8
Data yang telah terurut secara ascending:
2
5
8
12
15
25
37
57
1
2
3
3
5
6
7
8
Kasus 1 : cari = 12
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12, berarti probe pertama data langsung
ditemukan
7
Kasus 2 : cari = 15
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1
=4+1=5
Probe kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 8) div 2 = 6
A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah 1=6-1=5
Probe ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 5) div 2 = 5
A [Tengah] = A [5] = 15, berarti setelah probe ketiga, data
ditemukan
Kasus 3 : cari = 10
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah 1=4-1=3
Probe kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 3) div 2 = 2
A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1
=2+1=3
Probe ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (3 + 3) div 2 = 3
A [Tengah] = A [3] = 8, berarti setelah probe ketiga, data tidak
ditemukan
Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log
n ) kali. Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal
sebanyak 3 kali.
8
2.2
Algoritma dari Binary search
Algoritma pencarian biner dapat dituliskan sebagai berikut :
1L←0
2R←N-1
3 ketemu ← false
4 Selama (L Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
2.3
Contoh Studi Kasus
Sebuah contoh aksi pencarian biner adalah sebuah permainan tebak-tebakan dimana
seorang pemain harus menebak sebuah bilangan bulat positif yang dipilih oleh
pemain lain di antara 1 dan N, dengan memanfaatkan jawaban pertanyaan berupa ya
dan tidak. Misalnya N adalah 16 dan angka yang dipilih adalah 11, permainan dapat
berjalan sebagai berikut:
•
Apakah angka lebih besar dari 8? (ya)
•
Apakah angka lebih besar dari 12? (tidak)
•
Apakah angka lebih besar dari 10? (ya)
•
Apakah angka lebih besar dari 11? (tidak)
Sehingga, angka tersebut pasti 11. Pada setiap langkah, kita memilih sebuah angka
yang tepat berada di tengah-tengah jangkauan nilai-nilai yang mungkin. Sebagai
contoh, saat kita mengetahui angka tersebut lebih besar dari 8, tetapi lebih kecil atau
sama dengan 12, kita mengetahui untuk memilih angka di tengah-tengah jangkauan
[9, 12] (pada kasus ini 10 adalah yang optimal).
9
2.4
Program
package binary_search;
import javax.swing.*;
public class Binary_Search {
public static int[] data = null;
public static int awal, tengah, akhir, temp, count;
public static void main(String[] args)
{
JTextArea area=new JTextArea();
//
Input jumlah data
String
input1=JOptionPane.showInputDialog("Masukan
Jumlah
Data:");
int jumlah=Integer.parseInt(input1);
//
Input tiap nilai dan simpan ke array
data = new int[jumlah];
for(int x = 0; x < data.length; x++)
{
data[x]=Integer.parseInt(JOptionPane.showInputDialog
("Masukan Angka:"));
}
//
Menampilkan data sebelum di sorting
10
area.setText("\nData yang dimasukan adalah
:
");
for(int x = 0; x < data.length; x++){
area.append(data[x]+" ");
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
//
Proses sorting
sorting();
//
Menampilkan Data setelah di sorting
System.out.println();
area.setText("Hasil Pengurutanya Adalah
:
");
for(int x = 0; x < data.length; x++){
area.append(data[x]+" ");
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
//
Input data yang dicari
String
input2=JOptionPane.showInputDialog("Masukan
Data
yang
dicari:");
int cari=Integer.parseInt(input2);
//
Proses Metode Pencarian Binary Searching
11
System.out.println();
boolean temu = false;
awal = 0;
akhir = data.length - 1;
temp = 0;
count = 0;
int iterasi = 0;
area.setText("Probe\tAwal\tAkhir\tTengah\tNilai\n");
while(temu != true)
{
tengah = (awal + akhir) / 2;
iterasi++;
//
nilai == cari
if(data[tengah] == cari)
{
area.append(iterasi+"
area.append(awal+"
area.append(akhir+"
\t");
\t");
\t");
area.append(tengah+"
\t");
area.append(data[tengah]+"\n");
temu = true;
break;
}
//
nilai < cari
else if(data[tengah] < cari)
{
area.append(iterasi+"
\t");
12
area.append(awal+"
area.append(akhir+"
\t");
\t");
area.append(tengah+"
\t");
area.append(data[tengah]+"\n");
awal = tengah + 1;
}
//
nilai > cari
else if(data[tengah] > cari)
{
area.append(iterasi+"
area.append(awal+"
area.append(akhir+"
area.append(tengah+"
\t");
\t");
\t");
\t");
area.append(data[tengah]+"\n");
akhir = tengah - 1;
}
//
Cek Worst Case
if(temp != data[tengah])
temp = data[tengah];
else
count++;
//
batasan untuk worst case
if(count == 3)
break;
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
13
//
Output
if(temu == true){
area.append("\nData
"+cari+"
ditemukan
pada index ke-"+tengah+"\n"+
"dan Probe ke-"+iterasi);
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
}
else{
area.append("\nData
"+cari+"
tidak
ditemukan");
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
}
JOptionPane.showMessageDialog(null,"Created By ORTEGA");
}
//
Sorting Ascending
public static void sorting()
{
int temp = 0;
for(int x = 0; x < data.length; x++)
{
for(int y = 0; y < data.length; y++)
{
if(x == y)
continue;
14
else
{
if(data[x] < data[y])
{
temp = data[y];
data[y] = data[x];
data[x] = temp;
}
}
}
}
}
}
15
2.5 Output Program
Apabila data yang dicari ditemukan:
16
Apabila data yang dicari tidak ditemukan:
17
Note: indeks pada program yang kami buat dimulai dari 0.
18
BAB 3
PENUTUP
3.1
Kesimpulan
Kesimpulan yang dapat ditarik dari makalah
binary search ini yaitu
Algoritma pencarian biner digunakan untuk mencari data pada sekumpulan data atau
rekaman yang sudah dalam keadaan terurut.
Selain itu kita dapat mempermudah pekerjaan manusia dalam bidang
Informasi, mempermudah dalam bidang Statistik, mempermudah pekerjaan manusia
dalam bidang komputerisasi lainya terutama dalam bidang pencarian data.
Dengan binary search ini kita dapat mempermudah pekerjaan manusia di
dalam hal mencari sebuah data. Sehingga dapat menciptakan suatu progam yang
bermanfaat dan memiliki nilai ekonomi.
3.2
Saran
a. Teliti dalam menghitung binary code
b. Teliti dalam menghitung nilai tengah dari binary code
c. Teliti
dalam
memasukan
bahasa
pemograman
pada
saat
mengcompile(ngoding).
19
DAFTAR PUSTAKA
http://diankuusuma.blogspot.com/2012/01/v-behaviorurldefaultvmlo.html
http://ekawirawanptn.blogspot.com/2010/05/algoritma-binary-search.html
http://kabehatake.blogspot.com/2010/05/algoritma-binary-search.html
http://aloen-pop.blogspot.com/2009/06/binary-searching.html
http://lecturer.eepis-its.edu/...%20Algoritma/.../Data%20Structure-bab8.pdf
http://mita.staff.gunadarma.ac.id/Downloads/files/.../Divide%26Conquer.doc
http://en.wikipedia.org/wiki/Binary_search
20
Binary Search
Disusun oleh:
Nama: Alifian Odi Mahendra
(2015-31-165)
Reski Yuli Defrianto
(2015-31-228)
Hendy Augustama
(2015-31-032)
Anita Oktavianti
(2015-31-039)
Ubed Sihombing
(2015-31-094)
Andini Prisilya Rasyid
(2015-31-014)
Inggrit Ivana Rumagit
(2015-31-231)
Kelas: E
SEKOLAH TINGGI TEKNIK – PLN
JAKARTA
2017
1
DAFTAR ISI
BAB 1 PENDAHULUAN ........................................................................................... 3
1.1
Latar Belakang........................................................................................................... 3
1.2
Rumusan Masalah ..................................................................................................... 4
1.3
Batasan Masalah ....................................................................................................... 4
1.4
Tujuan ....................................................................................................................... 4
1.5
Manfaat ..................................................................................................................... 4
BAB 2 PEMBAHASAN .............................................................................................. 5
2.1
Konsep....................................................................................................................... 5
2.2
Algoritma dari Binary search ..................................................................................... 9
2.3
Contoh Studi Kasus ................................................................................................... 9
2.4
Program................................................................................................................... 10
2.5
Output Program ...................................................................................................... 16
BAB 3 PENUTUP...................................................................................................... 19
3.1
Kesimpulan .............................................................................................................. 19
3.2
Saran ....................................................................................................................... 19
DAFTAR PUSTAKA ................................................................................................ 20
2
BAB 1
PENDAHULUAN
1.1
Latar Belakang
Seiring dengan berkembangnya Teknologi Informasi, yang membutuhkan
kecepatan dan ketepatan dalam berbagai aspek kehidupan. Kita dituntut untuk
bergerak cepat dalam segala hal, termasuk juga dalam bidang komunikasi informasi.
Salah satunya dalam bidang statistic yang meliputi pencarian data. Sehingga banyak
programer yang membuat program yang mempermudah kerja dalam bidang statistika
dan informasi, yakni dalam hal pencarian data. Dari program pencarian data terdapat
algoritma-algoritma yang digunakan untuk mencari sebuah data, salah satunya adalah
binary search.
Binary search adalah algoritma pencarian untuk data yang terurut. Pencarian
dilakukan dengan cara menebak apakah data yang dicari berada ditengah-tengah data,
kemudian membandingkan data yang dicari dengan data yang ada ditengah. Bila data
yang ditengah sama dengan data yang dicari, berarti data ditemukan. Namun, bila
data yang ditengah lebih besar dari data yang dicari, maka dapat dipastikan bahwa
data yang dicari kemungkinan berada disebelah kiri dari data tengah dan data
disebelah kanan data tengah dapat diabai. Upper bound dari bagian data kiri yang
baru adalah indeks dari data tengah itu sendiri. Sebaliknya, bila data yang ditengah
lebih kecil dari data yang dicari, maka dapat dipastikan bahwa data yang dicari
kemungkinan besar berada disebelah kanan dari data tengah. Lower bound dari data
disebelah kanan dari data tengah adalah indeks dari data tengah itu sendiri ditambah
Demikian seterusnya.
3
1.2
Rumusan Masalah
a) Bagaimana cara mencari data dengan cepat dan ukurat?
1.3
Batasan Masalah
Pada makalah ini akan dibahas mengenai salah satu metode pencarian, yaitu
Binary Search. Pada sesi ini hanya akan membahas mengenai:
a) Pengertian/konsep binary search
b) Algoritma binary search
c) Contoh study kasus
d) Contoh program binary search
1.4
Tujuan
a) Mempermudah pekerjaan manusia dalam bidang Informasi.
b) Mempermudah pekerjaan manusia dalam bidang Statistik.
c) Mempermudah pekerjaan manusia dalam bidang komputerisasi lainya
terutama dalam bidang pencarian data.
1.5
Manfaat
a) Pekerjaan manusia dalam bidang teknologi jadi lebih mudah, cepat, dan
efisien waktu.
4
BAB 2
PEMBAHASAN
2.1
Konsep
Pengertian
Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik
untuk menemukan nilai tertentu dalam sebuah larik (array) linear, dengan
menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak
secara ekslusif dalam ilmu komputer.
Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah
pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau
sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Pada
intinya, algoritma ini menggunakan prinsip divide and conquer, dimana sebuah
masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian
yang lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses
satu bagian dari tabel itu saja.Algoritma ini bekerja dengan cara memilih record
dengan indeks tengah dari tabel dan membandingkannya dengan record yang hendak
dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi
dua dan bagian tabel yang bersesuaian akan diproses kembali secara rekursif.
Penerapan terbanyak dari pencarian biner adalah untuk mencari sebuah nilai
tertentu dalam sebuah list terurut. Jika dibayangkan, pencarian biner dapat dilihat
sebagai sebuah permainan tebak-tebakan, kita menebak sebuah bilangan, atau nomor
tempat, dari daftar (list) nilai.
Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list;
oleh karena nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau
sesudah nilai yang di tengah tersebut, dan pencarian selanjutnya dilakukan terhadap
setengah bagian dengan cara yang sama.
5
Metoda Pencarian Biner (Binary Search) hanya bisa diterapkan jika data array
sudah terurut. Pengurutan Array bisa menggunakan jenis sorting descending atau
asscending.
Keunggulan
Keunggulan utama dari algoritma binary search adalah kompleksitas algoritmanya
yang lebih kecil daripada kompleksitas algoritma sequential search. Hal ini
menyebabkan waktu yang dibutuhkan algoritma binary search dalam mencari sebuah
record dalam sebuah table, lebih kecil daripada waktu yang dibutuhkan algoritma
sequential search.
Kelemahan
Data harus disorting dahulu dan algoritma lebih rumit, tidak baik untuk data berantai.
algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik
menaik maupun menurun.
Fungsi
Pencarian Biner (Binary Search) dilakukan untuk :
•
Memperkecil jumlah operasi pembandingan yang harus dilakukan antara data
yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data
yang sangat besar ukurannya.
•
Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara
berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak
dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
•
Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah
terurut, misalkan terurut menaik.
6
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
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.
Untuk lebih jelasnya, perhatikan contoh pada sekumpulan data berikut:
Data yang dimasukan:
12
15
57
8
37
2
25
5
1
2
3
3
5
6
7
8
Data yang telah terurut secara ascending:
2
5
8
12
15
25
37
57
1
2
3
3
5
6
7
8
Kasus 1 : cari = 12
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12, berarti probe pertama data langsung
ditemukan
7
Kasus 2 : cari = 15
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1
=4+1=5
Probe kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 8) div 2 = 6
A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah 1=6-1=5
Probe ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 5) div 2 = 5
A [Tengah] = A [5] = 15, berarti setelah probe ketiga, data
ditemukan
Kasus 3 : cari = 10
Probe pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah 1=4-1=3
Probe kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 3) div 2 = 2
A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1
=2+1=3
Probe ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (3 + 3) div 2 = 3
A [Tengah] = A [3] = 8, berarti setelah probe ketiga, data tidak
ditemukan
Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log
n ) kali. Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal
sebanyak 3 kali.
8
2.2
Algoritma dari Binary search
Algoritma pencarian biner dapat dituliskan sebagai berikut :
1L←0
2R←N-1
3 ketemu ← false
4 Selama (L Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
2.3
Contoh Studi Kasus
Sebuah contoh aksi pencarian biner adalah sebuah permainan tebak-tebakan dimana
seorang pemain harus menebak sebuah bilangan bulat positif yang dipilih oleh
pemain lain di antara 1 dan N, dengan memanfaatkan jawaban pertanyaan berupa ya
dan tidak. Misalnya N adalah 16 dan angka yang dipilih adalah 11, permainan dapat
berjalan sebagai berikut:
•
Apakah angka lebih besar dari 8? (ya)
•
Apakah angka lebih besar dari 12? (tidak)
•
Apakah angka lebih besar dari 10? (ya)
•
Apakah angka lebih besar dari 11? (tidak)
Sehingga, angka tersebut pasti 11. Pada setiap langkah, kita memilih sebuah angka
yang tepat berada di tengah-tengah jangkauan nilai-nilai yang mungkin. Sebagai
contoh, saat kita mengetahui angka tersebut lebih besar dari 8, tetapi lebih kecil atau
sama dengan 12, kita mengetahui untuk memilih angka di tengah-tengah jangkauan
[9, 12] (pada kasus ini 10 adalah yang optimal).
9
2.4
Program
package binary_search;
import javax.swing.*;
public class Binary_Search {
public static int[] data = null;
public static int awal, tengah, akhir, temp, count;
public static void main(String[] args)
{
JTextArea area=new JTextArea();
//
Input jumlah data
String
input1=JOptionPane.showInputDialog("Masukan
Jumlah
Data:");
int jumlah=Integer.parseInt(input1);
//
Input tiap nilai dan simpan ke array
data = new int[jumlah];
for(int x = 0; x < data.length; x++)
{
data[x]=Integer.parseInt(JOptionPane.showInputDialog
("Masukan Angka:"));
}
//
Menampilkan data sebelum di sorting
10
area.setText("\nData yang dimasukan adalah
:
");
for(int x = 0; x < data.length; x++){
area.append(data[x]+" ");
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
//
Proses sorting
sorting();
//
Menampilkan Data setelah di sorting
System.out.println();
area.setText("Hasil Pengurutanya Adalah
:
");
for(int x = 0; x < data.length; x++){
area.append(data[x]+" ");
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
//
Input data yang dicari
String
input2=JOptionPane.showInputDialog("Masukan
Data
yang
dicari:");
int cari=Integer.parseInt(input2);
//
Proses Metode Pencarian Binary Searching
11
System.out.println();
boolean temu = false;
awal = 0;
akhir = data.length - 1;
temp = 0;
count = 0;
int iterasi = 0;
area.setText("Probe\tAwal\tAkhir\tTengah\tNilai\n");
while(temu != true)
{
tengah = (awal + akhir) / 2;
iterasi++;
//
nilai == cari
if(data[tengah] == cari)
{
area.append(iterasi+"
area.append(awal+"
area.append(akhir+"
\t");
\t");
\t");
area.append(tengah+"
\t");
area.append(data[tengah]+"\n");
temu = true;
break;
}
//
nilai < cari
else if(data[tengah] < cari)
{
area.append(iterasi+"
\t");
12
area.append(awal+"
area.append(akhir+"
\t");
\t");
area.append(tengah+"
\t");
area.append(data[tengah]+"\n");
awal = tengah + 1;
}
//
nilai > cari
else if(data[tengah] > cari)
{
area.append(iterasi+"
area.append(awal+"
area.append(akhir+"
area.append(tengah+"
\t");
\t");
\t");
\t");
area.append(data[tengah]+"\n");
akhir = tengah - 1;
}
//
Cek Worst Case
if(temp != data[tengah])
temp = data[tengah];
else
count++;
//
batasan untuk worst case
if(count == 3)
break;
}
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
13
//
Output
if(temu == true){
area.append("\nData
"+cari+"
ditemukan
pada index ke-"+tengah+"\n"+
"dan Probe ke-"+iterasi);
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
}
else{
area.append("\nData
"+cari+"
tidak
ditemukan");
JOptionPane.showMessageDialog(null,area,"Binary
Search",JOptionPane.INFORMATION_MESSAGE);
}
JOptionPane.showMessageDialog(null,"Created By ORTEGA");
}
//
Sorting Ascending
public static void sorting()
{
int temp = 0;
for(int x = 0; x < data.length; x++)
{
for(int y = 0; y < data.length; y++)
{
if(x == y)
continue;
14
else
{
if(data[x] < data[y])
{
temp = data[y];
data[y] = data[x];
data[x] = temp;
}
}
}
}
}
}
15
2.5 Output Program
Apabila data yang dicari ditemukan:
16
Apabila data yang dicari tidak ditemukan:
17
Note: indeks pada program yang kami buat dimulai dari 0.
18
BAB 3
PENUTUP
3.1
Kesimpulan
Kesimpulan yang dapat ditarik dari makalah
binary search ini yaitu
Algoritma pencarian biner digunakan untuk mencari data pada sekumpulan data atau
rekaman yang sudah dalam keadaan terurut.
Selain itu kita dapat mempermudah pekerjaan manusia dalam bidang
Informasi, mempermudah dalam bidang Statistik, mempermudah pekerjaan manusia
dalam bidang komputerisasi lainya terutama dalam bidang pencarian data.
Dengan binary search ini kita dapat mempermudah pekerjaan manusia di
dalam hal mencari sebuah data. Sehingga dapat menciptakan suatu progam yang
bermanfaat dan memiliki nilai ekonomi.
3.2
Saran
a. Teliti dalam menghitung binary code
b. Teliti dalam menghitung nilai tengah dari binary code
c. Teliti
dalam
memasukan
bahasa
pemograman
pada
saat
mengcompile(ngoding).
19
DAFTAR PUSTAKA
http://diankuusuma.blogspot.com/2012/01/v-behaviorurldefaultvmlo.html
http://ekawirawanptn.blogspot.com/2010/05/algoritma-binary-search.html
http://kabehatake.blogspot.com/2010/05/algoritma-binary-search.html
http://aloen-pop.blogspot.com/2009/06/binary-searching.html
http://lecturer.eepis-its.edu/...%20Algoritma/.../Data%20Structure-bab8.pdf
http://mita.staff.gunadarma.ac.id/Downloads/files/.../Divide%26Conquer.doc
http://en.wikipedia.org/wiki/Binary_search
20