ARRAY - intanviona.files.wordpress.com fileAplikasi2x Java Piramida Bilangan Piramida bilangan adalah deretan bilangan yang tersusun sedemikian rupa, sehingga membentuk suatu piramida
Post on 27-Apr-2019
421 Views
Preview:
Transcript
ARRAY
7th week
Estu Sinduningrum ST,MT
Aplikasi2x Java
Piramida Bilangan
Piramida bilangan adalah deretan bilangan yang tersusun
sedemikian rupa, sehingga membentuk suatu piramida bilangan.
Puncak piramida ditempati oleh bilangan l, baris kedua oleh
bilangan 2,1,2, baris ketiga oleh 3,
2,1,2,3, dan seterusnya. Angka 1 akan menjadi cermin yang
simetris bagi deret, baik di sebelah kanan, maupun di sebelah
kiri.
Estu Sinduningrum, ST, MT
Latihan 36
PiramidaBilangan :
Estu Sinduningrum, ST, MT
/**
* Title : Program Membuat Piramida Bilangan
* Deskripsi : Membuat struktur tampilan piramida
bilangan.
*/
public class PiramidaBilangan
{
/** main method */
public static void main(String[] args)
{
int jumBaris;
System.out.println ( " \nPROGRAM MENCETAK
PIRAMIDA BILANGAN" );
System.out.println ("---------------\n");
// Menginstruksikan user untuk memasukkan jumlah
baris
System.out.print("Masukkan jumlah baris : ");
jumBaris = InputConsole.readInt ();
for (int baris = 1; baris < (jumBaris + 1); baris++)
{
tengah
// Untuk mamanipulasi tampilan
for (int kolom = 1; kolom < (jumBaris + 1) - baris;
kolom++)
System.out.print (" ");
// Mencetak spasi di urutan depan hingga posisi
// Mencetak bilangan di urutan depan hingga posisi
tengah
for (int bilangan = baris; bilangan >= 1; bilangan--)
System.out.print ( bilangan) ;
// Mencetak bilangan di urutan dari posisi tengah
hingga belakang
for (int bilangan = 2; bilangan <= baris; bilangan++
)
System.out.print (bilangan) ;
// Memulai baris baru
System.out.println () ;
} } }
Latihan 37
Bilangan Prima :
Bilangan Prima adalah bilangan yang lebih besar
dari 1 dan habis dibagi oleh bilangan itu sendiri
dan bilangan 1 terdiri dari: 2, 3, 5, 7, dan
seterusnya.
Estu Sinduningrum, ST, MT
Estu Sinduningrum, ST, MT
/**
* Title : program Bilangan prima
* Deskripsi : Mengaplikasikan beberapa elemen kendali
* (while, for, if) untuk mencari bilangan Prima
*/
public class Bilanganprima {
/**Main method*/
public static void main(String[] args)
{
int jumBilPrima;
int counter = 1; // Counter penghitung jumlah bilangan
prima
int bilangan = 2; // Bilangan yang diperiksa atau bukan
// Variabel ini diinisialisasi dengan 2
// karena merupakan bilangan prima pertama
// Selanjutnya bilangan ini akan diupdate
// dangan bilangan berikutnya (3,4,5,..)
boolean testPrima = true; // Kondisi yang akan menyatakan
// suatu bilangan sebagai prima
// atau bukan.
System.out.println ("\n PROGRAM MENCARI N BILANGAN
PRIMA " + " PERTAMA");
System.out.println (" PROGRAM MENCARI N BILANGAN
PRIMA " + "-----\n");
// Meninstruksikan user untuk memasukkan N
// (jumlah bilangan prima) yang akan dicari.
System.out.println (" Masukkan jumlah Bilangan PRIMA :");
jumBilPrima = InputConsole.readInt();
System.out.println("\n Mencari " + jumBilPrima
+ " Bilangan Prima Pertama : \n");
// Blok yang mengulang pemeriksaan bila bilangan
// yang baru adaLah bilangan prima
while (counter <= jumBilPrima)
{
// mengasumsikan suatu bilangan merupakan bilangan Prima
testPrima = true;
// Mengeset testPrima menjadi false, jika bilangan
// tersebut ternyata bukan bilangan prima
for (int pembagi = 2; pembagi <= bilangan/2; pembagi++)
{
if (bilangan % pembagi== 0) // Jika bernilai true, maka
// biLangan bukan Prima
{
testPrima = false;
break; // Ke1uar dari blok perulangan for
} }
// Mencetak bilangan Prima dan menambahl<an counter
if (testPrima)
{
if (counter%10 == 0)
{
// Mencetak bilangan Prima
System.out.println (bilangan) ;
}
else
System.out.print(bilangan + " " );
counter++; // menambah satu ke counter
}
// Memeeriksa apakah bilangan selajutnya merupakanPrima
bilangan++;
} } }
ARRAY ATAU LARIK
8th week
Estu Sinduningrum ST,MT
Definisi Larik
Larik atau array dapat didefinisikan sebagai tabel yang terstruktur.
Semua array terdiri dari tabel2 yang dapat diisi dengan variabel2
bertipe sama.
Array bertipe integer hanya dapat menampung integer.
Array bertipe char hanya dapat menampung karakter.
Tiap tabel memiliki indeks (nomor tabel), pada java indeks dimulai
dari 0 (nol).
Tiap tabel dapat diisi oleh satu variabel.
Estu Sinduningrum, ST, MT
Definisi Larik
Array adalah:
Suatu entitas (kesatuan) yang beranggotakan elemen-
elemen/ variabel bertipe data sama dan dapat
diakses dengan memanggil nama array beserta
indeks elemennya
Estu Sinduningrum, ST, MT
Definisi Larik
Variabel array dapat dideklarasikan dengan dua
cara:
Estu Sinduningrum, ST, MT
1. tipedata [ ] namaArray;
atau
2. tipedata namaArray [ ]; // Bentuk ini sering dipakai
Estu Sinduningrum, ST, MT
Array 1 tingkat
Array 1 tingkat hanya terdiri atas satu jenis
indeks.
Saat mendeklarasikan array kita harus
menentukan banyaknya indeks dan tipe data
untuk variabel
Estu Sinduningrum, ST, MT
Array 1 tingkat
Estu Sinduningrum, ST, MT
Array 1 tingkat
Estu Sinduningrum, ST, MT
Array 1 tingkat
Estu Sinduningrum, ST, MT
Array 2 tingkat
Pada dasarnya konsep array 2 tingkat sama seperti
array 1 tingkat, hanya saja pada deklarasinya array 2
tingkat ada dua macam indeks yang harus kita
tentukan.
Salah satu penggunaan array 2 tingkat adalah pada
operasi matriks, dimana saat mendeklarasikan array
kita harus menentukan jumlah kolom dan jumlah
indeks baris.
Estu Sinduningrum, ST, MT
Array 2 tingkat
Estu Sinduningrum, ST, MT
Array 2 tingkat
Estu Sinduningrum, ST, MT
Array 2 tingkat
Estu Sinduningrum, ST, MT
Contoh
Contoh pertama akan membentuk variabel array
deretBilangan dengan tipe integer sebanyak 10
elemen.
Pada contoh kedua akan terbentuk varibel array
namaHari dengan tipe String sebanyak 7 elemen.
Perhatikan ilustrasi berikut.
Estu Sinduningrum, ST, MT
Ilustrasi array
Estu Sinduningrum, ST, MT
Menginisialisasi Array
Pada saat array terbentuk pertama kali, elemen-elemennya akan
memiliki nilai default 0 untuk tipe numerik, blank (kosong) untuk char,
dan salah (false) untuk boolean. Gunakan bentuk berikut untuk
mengakses suatu elemen dari array.
Indeks adalah bilangan integer yang merrunjukkan letak urutan elemen
dalam array. Indeks dari array berukuran N dimulai dari 0 hingga N-1.
Gunakan method length ( ) untuk mengetahui berapa panjang/jumlah
elemen.
Estu Sinduningrum, ST, MT
namaArray[indeks];
Menginisialisasi Array
Anda harus menunjuk elemen tersebut dan kemudian mengisinya nilai yang
dikehendaki untuk menginisialisasi suatu elemen.
Bila ingin menginisialisasi seluruh elemen dari array, bisa digunakan
statement perulangan.
Sebagai ilustrasi, kita ingin rnembuat array deretBilangan yang elernen-
elemennya adalah { 10, 20, 30,..,100).
Proses inisialisasi elemennya bisa dilakukan dalam tiga cara, yaitu: pertama
bersamaan dengan deklarasi variabel, kedua dengan mengakses dan memberi
nilai elemen satu persatu, atau ketiga dengan bentuk perulangan (biasanya
for) agar lebih praktis.
Estu Sinduningrum, ST, MT
Menginisialisasi Array
1. int il deretBilangan = (10, 20, 30,40, 50, 60, 70, 80, 90, 100 );
2. Inisialisasi elemen satu per satu sebagai berikut:
deretBilangan [0] = 1g0;
deretBilangan [l] = 20;
deretBilangan [9] = 100;
3. Inisialisasi dengan for sebagai berikut:
for (i = 0, i < 10, i++) {
deretBilangan [i] = 10 + l0*i;
}
Estu Sinduningrum, ST, MT
Melewatkan Array ke Method
Java menggunakan dua jenis nrekanisme untuk tnelervatkan argumen ke suatu method:
1. Untuk variabel bertipe data primitif, yang akan dilewatkan ke method adalah nilai
aktualnya. Perubahan nilai variabel pada saat nrengoperasikannya di dalam method
tidak akan mengubah nilai variabel tersebut. Mekanisme ini dinamakan Pass by
Value.
2. Pada variabel array, nilai yang dilewatkan pada hakikatnya adalah alamat referensi
rnemory yang menunjuk array tersebut, bukan nilai aktual masing-masing elemennya.
Bila alar,rat referensi ini berubah pada saat mengoperasikannya di dalam method,
maka akan mengubah nilai variabel array asalnya. Mekanisme ini disebut Pass by
Reference.
Estu Sinduningrum, ST, MT
Melewatkan Array ke Method
Namun, bila kita mengambil nilai suatu elemen dari
array, dan kemudian melewatkannya ke method,
maka elemen itu akan diperlakukan seperti pada
tipe data primitif.
Estu Sinduningrum, ST, MT
Menyalin (meng-copy) Array
Ada tiga cara menyalin array, Yaitu:
1. Menggunakan perulangan untuk meng-copy masing-masing elemen
Contoh berikut akan meng-copy array deretBilangan menjadi array baru sepuluhBilangan:
for (int i = 0; i < deretBilangan.length; i++)
sepuluhBilangan [i] = deretBilangan [i];
2. Mcmakai method static arraycopy () dari kelas java.lang.System
Bentuk:
arrycopy (arrayAsal, posisiArmyAsal, arrayBaru, posisiArrayAsal panjang);
posisiArrayAsal dan posisiArrayBaru menunjukkan posisi elemen yang akan di-copy pada array asal dan array baru. Banyaknya
elemen yang akan di-copy ditunjukkan oleh panjang.
int[] arrayAsal = (10,20, 30,40,50,60,70,80,90, 100);
int[] arrayBaru = new int[arrayAsal.length];
System.an:rycopy (zrmyAsr I, 0, armyBzru, Q a rray Asa l - I e n gth ) ;
3. Menggunakan method clone
Estu Sinduningrum, ST, MT
Array Multidimensi
Selain berupa deretan variabel satu dimensi, kita dapat pula membuat
arrayyang berukuran lebih dari satu dimensi atau disebut juga array
multidimensi.
Pada bagian ini kita akan membahas mengenai array dua dimensi atau
yang lebih dikenal sebagai matrix dua dimensi berukuran m x n.
Keterangan:
exy = Elemen pada baris ke-x dan kolom ke-y.
Gunakanlah bentuk deklarasi berikut untuk membuat matriks dua
dimensi.
Estu Sinduningrum, ST, MT
Tipedata[] [] matriks = new tipedata[jumlahBaris] [jumlahKolom];
Susunan elemen
array multidimensi
Estu Sinduningrum, ST, MT
Contoh:
int [] [] = new int [3][2]; //Membuat matriks berukuran 3x2
int [] U = new int [4][4]; //Membuat matriks 4x4
Selain bentuk di atas deklarasi matriks dapat dilakukan seperti di
bawah ini:
int [] [] matriks =
{
{2,3,6,7},
(10,4, l, 0},
(9,2,0,0},
{3,0. l, 1)
};
Anda harus mencantumkan indeksnya (no baris dan no kolom) secara jelas untuk menugaskan
elemen matriks dengan suatu nilai. misalnya: matriks [3] [1] = 9; //Menugaskan elemen pada
baris ke 3 dan kolom ke 1 dengan nilai 9.
Estu Sinduningrum, ST, MT
Operasi Matriks
Matriks memiliki operasi penjumlahan, pengurangan, perkalian, dan
pembagian. Pada bagian ini kita akan rnembahas penjumlahan dan
perkalian matriks.
Penjumlahan
Perkalian Matriks
Estu Sinduningrum, ST, MT
Syarat Penjumlah Matriks:
Dua matriks A dan B dapat dijumlahkan bila kedua matriks
tersebut berdimensi sama.
Syarat Perkalian matriks :
Matriks A (mxn) dapat dikalikan dengan B (pxq) bila
Jumlah kolom matriks A = jumlah baris matriks B. Jadi n = p.
Latihan 38 :
Operasi Matriks
Cij = aij x b1j + ai2 x b2j +
ai2 x b2j
Estu Sinduningrum, ST, MT
Estu Sinduningrum, ST, MT
/**
•Title
* Deskripsi: Matriks
* dua matriks dalam satu file java.
* Sebelum mengkompile file ini kompilelah file
* InputConsole.java terlebih dahulu.
*/
public class Matriks
{
/** Main method */
public static void main (String [] args)
{
System.out.println("\n PROGRAM PENJUMLAHAN Dan
PERKALIAN MATRIKS");
// Membuat dua matriks berdimensi dua (mxn) di mana m = n = 3
System.out.print("Masukkan orde matriks :");
int ordeMatriks = InputConsole.readInt();
System.out.println();
int[][]matriks1= new int[ordeMatriks][ordeMatriks];
int[][]matriks2= new int[ordeMatriks][ordeMatriks];
// Menginstruksikan user untuk menginputkan tiap-tiap elemen
// Memasukkan entry matriks 1
for (int i=0; i<matriks1.length; i++)
for (int j=0; j<matriks1[i].length; j++)
{
int indeksBaris = i+1;
int indeksKolom = j+1;
System.out.print("Masukkan elemen Matriks A pada baris ke "+
indeksBaris +" kolom ke " + indeksKolom +" : ");
matriks1 [i][j] = InputConsole.readInt(); }
System.out.println("---------------------------------------------------");
// Memasukkan entry matriks 2
for (int i=0; i< matriks1.length; i++)
for (int j=0; j< matriks1[i].length; j++)
{
int indeksBaris = i+1;
int indeksKolom = j+1;
System.out.print("Masukkan elemen Matriks B pada baris ke "+
indeksBaris + " kolom ke " + indeksKolom + " :");
matriks2 [i][j] = InputConsole.readInt();
}
// Menambahkan dua matriks dan mencetak hasilnya di monitor
int[][] matriksHasil = jumlahMatriks(matriks1,matriks2) ;
System.out.println("\n Penjumlahan Matriks");
cetakHasil (matriks1, matriks2, matriksHasil,'+');
// Mengalikan dua matriks dan mencetak hasilnya di monitor
matriksHasil = kaliMatriks(matriks1, matriks2);
System.out.println("\nPerkalian matriks" ) ;
cetakHasil(matriks1, matriks2, matriksHasil,'x' ) ;
}
/** Method penjumlahan dua matriks */
public static int[][] jumlahMatriks(int[][] matriks1, int [][] matriks2)
{
int[][]hasil = new
int[matriks1.length][matriks1[0].length];
for (int i = 0; i<hasil.length; i++)
for (int j = 0; j<hasil[0].length; j++)
hasil [i][j] = matriks1[i][j] + matriks2[i][j];
return hasil;
}
/** Method perkalian dua matriks */
public static int[][] kaliMatriks(int[][] matriks1, int[][] matriks2)
{
Estu Sinduningrum, ST, MT
int[][]hasil=new
int[matriks1.length][matriks2[0].length];
for (int i =0; i<hasil.length; i++)
for (int j=0; j<hasil.length; j++)
for (int k =0; k<matriks1[0].length; k++)
hasil [i][j] += matriks1[i][k]*matriks2[k][j];
return hasil;
}
/** Method untuk mencetak hasil di monitor */
public static void cetakHasil (
int[][] matriks1, int[][] matriks2, int[][] matriks3, char op)
{
for (int i = 0; i<matriks1.length; i++)
{
for (int j= 0; j<matriks1.length; j++)
System.out.print("" + matriks1[i][j]);
if (i== matriks1.length/2)
System.out.print(" " + op + " " );
else
System.out.print(" ");
for (int j= 0; j<matriks2[0].length; j++)
System.out.print("" + matriks2[i][j]);
if (i== matriks1.length/2)
System.out.print(" " + op + " " );
Else
System.out.print(" ");
for (int j= 0; j<matriks3[0].length; j++)
System.out.print("" + matriks3[i][j]);
System.out.print(" ");
} } }
Mengurutkan Elemen Array
(Sorting)
Misalkan ada array: (2, l, 17,89, 4, 5), dan Anda diminta untuk
mengurutkan data mulai dari yang terkecil sampai terbesar sehingga
menjadi (1,2,4,5,17,89).
Estu Sinduningrum, ST, MT
Mengurutkan Elemen Array
(Sorting)
Algoritma Sorting (pengurutan) suatu deretan elemen adalah sebagai berikut:
1. Cari bilangan yang terbesar dan merneriksa posisi bilangan tersebut (apakah
sudah terletak di paling kanan?).
2. Bila belum, letakkan bilangan tcrbesar tersebut pada posisi paling kanan. Proses
ini sekaligus berarti saling bertukar posisi antara bilangan yang semula
menempati posisi paling kanan dengan posisi bilangan terbesar tersebut.
3. Selanjutnya, mencari lagi bilangan terbesar dari deretan sisa dan letakkan
bilangan tersebut di belakang bilangan terbesar hasil proses pertama.
4. Lakukan proses di atas sampai selesai.
Estu Sinduningrum, ST, MT
Dari deretan {2, l, 17, 89, 4, 5}, maka proses sorting secara manual
menjadi:
Tahap 1 :2,1,17,89,4,5 // Mencari terbesar pertama
Tahap 2 : 7, I, 17, 5, 4,89 // Menukarkan posisi (swap)
Tahap 3 :2,1,17,5,4,89 l //Mencari terbesar kedua
Tahap 4 :2, 1,4,5, 17,89 // Menukarkan posisi (swap)
Tahap 5 :2,1,4,5,17,89 // Posisi bilangan 5 dan 4 telah sesuai – lewati
Tahap 6 :2,1,4,5, 17,89 // Cari terbesar sisa
Tahap 7 :1,2,4,5,17,89 // Tukarkan posisi ...selesai.
Estu Sinduningrum, ST, MT
Mengurutkan Elemen Array
(Sorting)
Latihan 39 :
Estu Sinduningrum, ST, MT
/**
* Title : Mengurutkan Array
* Description : Mengurutkan Array secara naik
* (terkecil sampai terbesar)
*/
public class SortingArray2
{
/** Main method */
public static void main (String [] args)
{
int [] deretanBilangan = new int[10];
System.out.println("\nPROGRAM MENGURUTKAN ELEMEN
ARRAY");
System.out.println("--------------------------------\n");
// Membuat deretan bilangan random
System.out.print("Deretan bilangan random sebelum diurutkan :");
for (int i = 0; i< deretanBilangan.length; i++) {
deretanBilangan [i] = (int)(Math.random()*100);
System.out.print(deretanBilangan [i]+" ");
}
System.out.println();
// Mengurutkan elemen array
sorting(deretanBilangan);
// Mengurutkan hasil pengurutan
System.out.println();
System.out.print("Deretan bilangan setelah diurutkan :");
cetakDeretan(deretanBilangan);
}
/** Method mencetak bilangan ke monitor console */
static void cetakDeretan(int[] deretan)
{
for (int i = 0; i < deretan.length; i++)
System.out.print(deretan[i] + " ");
System.out.println();
}
/** Method untuk mengurutkan array */
static void sorting(int[] deretan)
{
int nilaiMax;
int indeksNilaiMax;
for (int i = deretan.length-1; i >= 1; i --)
{
// Mencari nilai maksimum dalam deretan [0..i]
nilaiMax = deretan[i];
indeksNilaiMax = i;
for (int j= i-1; j >= 0; j --)
{
if (nilaiMax < deretan[j])
{
nilaiMax = deretan[j];
indeksNilaiMax = j;
} }
/** Menukar posisi elemen deretan[i] dengan elemen
deretan[indeksNilaiMax] jika diperlukan*/
if (indeksNilaiMax !=i)
{
deretan[indeksNilaiMax] = deretan[i];
deretan[i] = nilaiMax;
} } } }
Mencari Elemen Array
(Searching)
Ada dua algoritma untuk mencari elemen array, yaitu:
1. Pencarian Linier (Linear Search)
Algoritma ini akan mencari elemen berdasarkan suatu kunci
(key), yang berupa bilangan atau karakter yang diinginkan
dosesnya berlangsung dengan mencocokkan tiap-tiap elemen
dengan kunci tersebut.
Bila ditemukan. maka method akan mengembalikan indeks dari
elemen itu, sedangkan bila tidak ada, maka method akan
mengembalikan nilai integer -1.
Estu Sinduningrum, ST, MT
Mencari Elemen Array
(Searching)
Latihan 40 :
Estu Sinduningrum, ST, MT
/**
* Title : Mengurutkan Array
* Description : Mengurutkan Array secara naik
* (terkecil sampai terbesar)
*/
public class PencarianLinier
{
/** Main Method */
public static void main(String[] args)
{
int[] deretan = new int[10];
System.out.println("\n PROGRAM PENCARIAN LINIER");
System.out.println("--------------------------------\n");
// Membuat deretan bilangan random
System.out.print("Deretan Bilangan");
for (int i = 0; i < deretan.length; i++)
{
deretan[i] = (int) (Math.random()*100);
System.out.print(deretan[i]+" ");
}
System.out.println();
// Menginstruksikan user untuk memasukkan kunci
System.out.print("\n Masukkan kunci ");
int kunci = InputConsole.readInt();
int indeks = cariKunci (kunci, deretan);
if (indeks != -1)
System.out.println("\nKunci tidak ditemukan pada"+"deretan
bilangan");
}
/** Method mencari kunci pada deretan bilangan */
public static int cariKunci (int kunci, int[] deretan)
{
for (int i = 0; i < deretan.length; i ++)
if (kunci == deretan[i])
return i;
return -1;
}
}
Mencari Elemen Array
(Searching)
2. Pencarian Biner (Binary Search)
Algoritma pencarian biner merupakan perbaikan dari konsep
sebelumnya (pencarian linier) karena lebih efisien.
Dengan algoritma ini,kita tidak perlu merneriksa semua elemen
sehingga menghemat waktu pencarian.
Algoritma ini dibangun berdasarkan ide sebagai berikut:
a. Urutkan terlebih dahulu elemen-elemen alray berdasarkan nilainya.
Urutan boleh naik (bilangan terkecil dahulu, kemudian terakhiri
bilangan terbesar) atau turun.
Estu Sinduningrum, ST, MT
Pencarian Biner (Binary Search)
b. Selanjutnya, ambillah nilai elemen yang terletak
pada posisi tengah urutan array tersebul Kita
sebut nilai elemen ini sebagai nilai tengah. Nilai
tengah ini membagi array menjadi dua segmen;
segmen pertama berisi elemen terkecil sampai
nilai tengah, sedangkan segmen kedua berisi
elemen nilai tengah sampai nilai terbesar.
Estu Sinduningrum, ST, MT
Pencarian Biner (Binary Search)
Bandingkanlah nilai elcmen yang dicari (kunci) dengan nilai
tengah ini. Proses pembandingan ini nremilikitiga kemungkinan:
a. Bila nilai kunci sama dengan nilai tengah, maka pencarian selesai.
b. Bila nilai kunci lebih kecil dari nilai tengah, maka algoritma akan
mengabaikan setengah bagian dari array (mulai dari nilai tengah
sampai nilai elemen terbesar). Selanjutnya. proses pencarian
difokuskan untuk segmen yang lain, yaitu elemen terkecil sampai
kepada nilai tengah. Kemudian, algoritma akan membagi lagi
Segmen tersebut menjadi dua, dilanjutkan proses pembandingan dan
seterusnya.
Estu Sinduningrum, ST, MT
Pencarian Biner (Binary Search)
Bila nilai kunci lebih besar dari nilai tengah, maka
algoritma akan mengabaikan segmen yang berisi nilai
terkecil sampai nilai tengah. Selanjutnya kaidah
pencarian mengikuti pola pembagian segmen menjadi
dua dan membandingkannya dengan nilai tengah,
sama seperti butir sebelumnya. Demikian seterusnya
sampai elemen yang dicari ditemukan atau elemen
array sudah selesai diperiksa.
Estu Sinduningrum, ST, MT
Ilustrasi Pencarian Biner
Ambil data array pada contoh sebelumnya {2, l, l7, 89, 4, 5l }
Anda akan mencari elemen (kunci) dengan nilai = 2.
Tahap l: Proses mengurutkan elemen array: (1, 2,4,5,17,89).
Tahap 2: Algoritma akan mencari nilai tengah.
Penentuan nilai tengah dengan memperhitungkan indeks elenren, (indeks elemen pertama
+ indeks elemen tetakhir) /2.
Bila jumlah elemen gasal, tidak masalah. Bila genap, ambil pembulatan.
Dari contoh di atas, nilai tengahnya adalah 4.
Nilai tengah ini membagi array menjadi dua segmen:
Segmen pertama : 1,2, 4
Segmen kedua : 4. 5, 17,89
Estu Sinduningrum, ST, MT
Ilustrasi Pencarian Biner
Tahap 3: Proses Pembandingan; nilai kunci < nilai
tengah. berarti proses pencarian selanjutnya adalah
pada segmen pertama dengan elemen-elemen 1,2,4.
Tahap 4: Dari segmen pertama tersebut dicari lagi
nilai tengahnya, diperoleh 2.
Tahap 5: Proses Pembandingan: nilai kunci = nilai
tengah, pencarian selesai.
Estu Sinduningrum, ST, MT
PencarianBiner.java
Latihan 41 :
Estu Sinduningrum, ST, MT
/**
* Title : Pencarian Biner
* Description : Mendemonstrasikan Pencarian Elemen Array
* dengan konsep Biner
*/
public class PencarianBiner
{
/** Main Method */
public static void main(String[] args)
{
int[] deretanTerurut = new int[10];
System.out.println("\n PROGRAM PENCARIAN
BINER");
System.out.println("--------------------------------\n");
// Membuat list yang terurut dan menampilkannya ke console/
System.out.print("Deretan bilangan terurut");
for (int i = 0; i< deretanTerurut.length; i++ )
{
deretanTerurut[i] = 2*i + 1;
System.out.print(deretanTerurut[i] +" ");
}
System.out.println();
// Menginstruksikan user untuk memasukkan kunci.
// Kunci ini adalah nilai elemen yang akan dicari
System.out.print("\n Masukkan kunci :");
int kunci = InputConsole.readInt();
int indeksElemen = cariKunci (kunci, deretanTerurut);
if (indeksElemen !=-1)
System.out.println("\n Kunci ditemukan pada indeks ke "+
indeksElemen);
else
System.out.println("\n Kunci tidak ditemukan pada " + "deretan
ini"); }
/** Method mencari kunci dari deretan terurut */
public static int cariKunci(int kunci, int[] deretanTerurut)
{
int indeksTerkecil = 0; // Nilai awal indeks elemen array
// selalu dimulai 0
int indeksTerbesar = deretanTerurut.length -1;
return cariKunci (kunci, deretanTerurut,
indeksTerkecil, indeksTerbesar);
}
/* Proses pencarian */
public static int cariKunci (int kunci, int[] deretanTerurut, int
indeksTerkecil, int indeksTerbesar)
{
//Keluar dari proses pencarian karena tidak ditemukan
kunci
int indeksTengah = (indeksTerkecil + indeksTerbesar)/2;
if (kunci < deretanTerurut [indeksTengah])
return cariKunci (kunci, deretanTerurut,
indeksTerkecil, indeksTengah-1);
else if (kunci == deretanTerurut [indeksTengah])
return indeksTengah;
else
return cariKunci (kunci, deretanTerurut, indeksTengah+1,
indeksTerbesar);
} }
TERIMA KASIH
top related