Dicotomic Search
Sebagaimana halnya dengan algoritma Sequential Search Sorted , pencarian dengan teknik
Dicotomic Search mensyaratkan agar nilai dari elemen Array sudah dalam keadaan terurut
membesar. Ide dasar algoritma Dicotomic Search adalah dengan membandingkan nilai x
yang
dicari
dengan
nilai
yang
terdapat
pada
Indeks
Tengah
array
(Indeks Atas
(0 + 7) div 2
7 div 2
Jika nilai x lebih besar dari nilai yang terdapat pada Indeks Tengah array, maka pencarian
selanjutnya hanya akan di fokuskan ke setengah bagian elemen array yang berisi nilai nilai
yang lebih besar dari nilai tengah, proses seperti ini akan berlangsung sampai nilai x
ditemukan atau sampai nilai Indeks Atas Sudah lebih besar dari Indeks Bawah yang
berari nilai x yang dicari tidak terdapat dalam Array.
Untuk mendapatkan gambaran yang lebih jelas mengenai Pencarian menggunakan Dicotomic
Search, perhatikanlah ilustrasi pada contoh kasus berikut ini
Contoh Kasus :
Terdapat sebuah variable Array bernama ArrInt dengan 8 elemen, seperti gambar di bawah
ini
Indeks Ke
Nilai
12
90
311
500
= 0
Indeks Bawah = 7
Indeks Tengah = (Indeks Atas + Indeks Bawah) div 2
= (0 + 7) div 2
= 7 div 2
= 3
Periksa apakah nilai yang terdapat pada Indeks Tengah adalah nilai x yang dicari
ArrInt[IndeksTengah] ArrInt[3] 8, sedangkan yang dicari adakah x = 5, sehingga
nilai x yang dicari lebih kecil dari nilai yang ditemukan (5 < 8). Sehingga dapat
disimpulkan sementara bahwa nilai x yang dicari kemungkinan terdapat di antara indeks
ke 2
Atur ulang Nilai Indeks Atas, Indeks Bawah dan Indeks Tengah
Indeks Atas
= 0
Periksa apakah nilai yang terdapat pada Indeks Tengah adalah nilai x yang dicari
ArrInt[IndeksTengah] ArrInt[1] 3, sedangkan yang dicari adakah x = 5, sehingga
nilai x yang dicari lebih besar dari nilai yang ditemukan (5 > 3). Sehingga dapat
disimpulkan sementara bahwa nilai x yang dicari kemungkinan terdapat di antara indeks
ke 0 sampai dengan indeks ke 2
Atur ulang Nilai Indeks Atas, Indeks Bawah dan Indeks Tengah
Indeks Atas
= Indeks Tengah + 1
= 1+1
= 2
Indeks Bawah = 2
Indeks Tengah = (Indeks Atas + Indeks Bawah) div 2
= (2 + 2) div 2
= 4 div 2
= 2
Periksa apakah nilai yang terdapat pada Indeks Tengah adalah nilai x yang dicari
ArrInt[IndeksTengah] ArrInt[2] 5, sedangkan yang dicari adakah x = 5, sehingga
dapat disimpulkan nilai x = 5 ditemukan pada indeks ke 2
Pencarian (searching) adalah salah satu hal penting dalam banyak kasus pemrograman.
Terdapat bermacam macam algoritma pencarian yang telah dikembangkan dengan ide
dasar yang berbeda beda. Pada pembahasan kali ini akan dikususkan membahas algoritma
pencarian menggunakan metode Sequentiqal, atau Teknik Pencarian dengan cara berurut
Misalkan, jika dalam sebuah Array bernama VektorA mempunyai sejumlah elemen yang
sudah terisi dengan nilai integer. Akan dicari nilai x pada elemen elemen Array VektorA
tersebut. Jika nilai x ditemukan, maka algoritma yang dibuat akan memberikan hasil berupa
Indeks ( pada elemen Array ke berapa ) nilai x ditemukan. Sedangkan jika nilai x tidak
ditemukan di setiap elemen Array VektorA maka algoritma yang dibuat akan memberikan
hasil berupa message nilai x tidak ditemukan
Dengan menggunakan software Netbeans IDE 7.1 lakukanlah langkah langkah sebagai
berikut
1. Modifikasilah Java Class dengan nama Searching dengan menambah sebuah methode
dengan nama sequentialSearchSort()
void dicotomicSearch(int x, int jumlahArray){
boolean isFound = false;
int atas = 0;
int bawah = jumlahArray - 1;
int tengah;
while ((atas <= bawah) && (isFound == false)){
tengah = (atas + bawah) / 2;
if (this.ArrInt[tengah] == x) {
isFound = true;
System.out.println("Nilai x = " + x + " ditemukan
di Indeks ke -> " + tengah );
} else {
if (this.ArrInt[tengah] > x){
bawah = tengah - 1;
}
if (this.ArrInt[tengah] < x ) {
atas = tengah + 1;
}
}
}
if (isFound == false){
System.out.println("Nilai
ditemukan");
}
}
"
"
tidak
2. Buatlah Main Class untuk mendefiniskan object dan untuk memanggil methode
dicotomicSearch() dari Class Searching, lakukan langkah langkah berikut ini
Pencarian nilai ekstrim dalam sebuah variable Array dapat dibagi menjadi 2 macam, yang
pertama adalah mencari nilai terbesar (Maksimum) dan yang ke dua adalah mencari nilai
terkecil (Minimum). Teknik yang digunakan adalah dengan cara melihat satu persatu nilai
dari keseluruhan elemen array mulai dari indeks terkecil hingga indeks terbesar. Untuk
mempermudah pemahaman tentang teknik pencarian nilai ekstrim ini perhatikan contoh
sebagai berikut
Contoh Kasus:
Terdapat sebuah variable Array bernama ArrInt dengan 5 elemen, seperti gambar di bawah
ini
Indeks Ke
Nilai
90
311
Akan dicari nilai terbesar yang terdapat di variable array ArrInt. Lakukan tahap tahap
sebagai berikut
Buatlah sebuah variable untuk menyimpan nilai Indeks, dimana nilai terbesar ditemukan
IndeksMax = 0
Lakukan pengecekan dengan membandingkan nilai di setiap elemen array mulai dari
indeks ke 1 sampai indeks terakhir (indeks ke 4) untuk meng-update variable IndeksMax
Dengan cara yang sama kita bisa mencari nilai terhecil, dengan merubah operator
pembanding dengan tanda < dana nama variable diubah menjadi IndeksMin
Dengan menggunakan software Netbeans IDE 7.1 lakukanlah langkah langkah sebagai
berikut :
1. Modifikasilah Java Class dengan nama Searching dengan menambah sebuah methode
dengan nama nilaiMaksimum()
int nilaiMaksimum(){
int indeksMax;
indeksMax = 0;
for (int i = 1; i < this.ArrInt.length; i++){
if (this.ArrInt[i] > this.ArrInt[indeksMax]){
indeksMax = i;
}
}
return indeksMax;
}
2. Buatlah Main Class untuk mendefiniskan object dan untuk memanggil methode
nilaiMaksimum() dari Class Searching, lakukan langkah langkah berikut ini
Terbesar
"