Anda di halaman 1dari 4

123456789

[21 25 28 33 38 39 48 49 69]
21 25 28 33 38 [39 48 49 69]
21 25 28 33 38 39 48 [49 69]

• TENGAH1 = [(1 + 9) / 2 ] = 5 Kcari : K tengah1 49 > 38


AWAL = TENGAH1 + 1 = 6
• TENGAH2 = [(6 + 9) / 2 ] = 7 Kcari : K tengah2 49 > 38
AWAL = TENGAH21 + 1 = 8
TENGAH3 = [ (8 + 9 ) / 2 ] = 8 Kcari : K tengah2 49 = 49

Ketemu, Probe = 3

Contoh :
public class CobaBinarySearch
{
public static final int NOT_FOUND = -1;
public static int binarySearch( Comparable [ ] a, Comparable x )
{
int low = 0;
int high = a.length - 1;
int mid;
while( low <= high )
{
mid = ( low + high ) / 2;
if( a[ mid ].compareTo( x ) < 0 )
low = mid + 1;
else if( a[ mid ].compareTo( x ) > 0 )
high = mid - 1;
else
return mid;
}
return NOT_FOUND; // NOT_FOUND = -1
}
// Test program
public static void main( String [ ] args )
{
int SIZE = 8;
Comparable [ ] a = new Integer [ SIZE ];
for( int i = 0; i <>
a[ i ] = new Integer( i * 2 );
for( int i = 0; i <>2; i++ )
System.out.println( "Found " + i + " at " +
binarySearch( a, new Integer( i ) ) );
}
}

Penjelasan :
Binary Search adalah algoritma yang digunakan untuk mencari nilai tertentu dalam
array atau daftar terurut. Algoritma ini bekerja dengan membandingkan nilai yang dicari
dengan nilai tengah dari array. Jika nilai yang dicari kurang dari nilai tengah, maka algoritma
akan mempersempit jangkauan pencarian dengan mengabaikan setengah bagian atas array. Jika
nilai yang dicari lebih besar dari nilai tengah, maka algoritma akan mempersempit jangkauan
pencarian dengan mengabaikan setengah bagian bawah array. Proses ini akan terus berlanjut
hingga nilai yang dicari ditemukan atau tidak ditemukan.

Pada implementasi ini, fungsi binarySearch menerima dua parameter, yaitu sebuah
array Comparable a dan sebuah objek Comparable x yang akan dicari di dalam array tersebut.
Fungsi ini akan mengembalikan indeks di mana objek x ditemukan dalam array a atau nilai
konstanta NOT_FOUND (-1) jika x tidak ditemukan dalam array a.

Pada program utama (main), array a diinisialisasi sebagai array Integer dengan ukuran
8 dan nilai-nilai di dalamnya diisi dengan bilangan genap dari 0 hingga 14. Kemudian, nilai 0
dan 2 dicari dalam array a dengan menggunakan fungsi binarySearch dan indeks di mana nilai
tersebut ditemukan dicetak ke layar.

Dalam algoritma Binary Search, asumsi yang harus dipenuhi adalah bahwa array harus
sudah terurut sebelum pencarian dilakukan. Jika array tidak terurut, maka hasil pencarian tidak
dapat diandalkan. Selain itu, algoritma ini biasanya lebih efisien dibandingkan dengan
algoritma linear search, terutama untuk array yang besar.

Anda mungkin juga menyukai