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
/** * 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 (" ");
Latihan 36 PiramidaBilangan : // 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 () ; } } }
Estu Sinduningrum, ST, MT
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
/** * 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
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 elemenelemen/ 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:
1. tipedata [ ] namaArray; atau 2. tipedata namaArray [ ]; // Bentuk ini sering dipakai
Estu Sinduningrum, ST, MT
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.
namaArray[indeks];
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
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 elernenelemennya 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.
2.
3.
int il deretBilangan = (10, 20, 30,40, 50, 60, 70, 80, 90, 100 ); Inisialisasi elemen satu per satu sebagai berikut: deretBilangan [0] = 1g0; deretBilangan [l] = 20; deretBilangan [9] = 100; Inisialisasi dengan for sebagai berikut: for (i = 0, i < 10, i++) { deretBilangan [i] = 10 + l0*i; }
Estu Sinduningrum, ST, MT
Melewatkan Array ke Method
1.
Java menggunakan dua jenis nrekanisme untuk tnelervatkan argumen ke suatu method:
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
1.
Ada tiga cara menyalin array, Yaitu: 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. Tipedata[] [] matriks = new tipedata[jumlahBaris] [jumlahKolom];
Estu Sinduningrum, ST, MT
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 Syarat Penjumlah Matriks: Dua matriks A dan B dapat dijumlahkan bila kedua matriks tersebut berdimensi sama.
Perkalian Matriks Syarat Perkalian matriks : Matriks A (mxn) dapat dikalikan dengan B (pxq) bila Jumlah kolom matriks A = jumlah baris matriks B. Jadi n = p.
Estu Sinduningrum, ST, MT
Latihan 38 : Operasi Matriks
Cij = aij x b1j + ai2 x b2j + ai2 x b2j 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
int[][]hasil=new int[matriks1.length][matriks2[0].length]; for (int i =0; i
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(" "); }
} }
Estu Sinduningrum, ST, MT
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) 1.
Algoritma Sorting (pengurutan) suatu deretan elemen adalah sebagai berikut: 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
Latihan 39 : Mengurutkan Elemen Array (Sorting)
/** * 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; }
}
Estu ST, MT } Sinduningrum, }
Estu Sinduningrum, ST, MT
1.
Mencari Elemen Array (Searching)
Ada dua algoritma untuk mencari elemen array, yaitu:
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.
Latihan 40 : Mencari Elemen Array (Searching)
/** * Title : Mengurutkan Array * Description : Mengurutkan Array secara naik
// Menginstruksikan user untuk memasukkan kunci
* (terkecil sampai terbesar)
System.out.print("\n Masukkan kunci ");
*/
int kunci = InputConsole.readInt();
public class PencarianLinier
int indeks = cariKunci (kunci, deretan);
{
if (indeks != -1)
/** Main Method */
System.out.println("\nKunci tidak ditemukan pada"+"deretan
public static void main(String[] args)
bilangan");
{
}
int[] deretan = new int[10]; System.out.println("\n PROGRAM PENCARIAN LINIER");
/** Method mencari kunci pada deretan bilangan */
System.out.println("--------------------------------\n");
public static int cariKunci (int kunci, int[] deretan) {
// Membuat deretan bilangan random
for (int i = 0; i < deretan.length; i ++)
System.out.print("Deretan Bilangan");
if (kunci == deretan[i])
for (int i = 0; i < deretan.length; i++)
return i;
{
return -1; deretan[i] = (int) (Math.random()*100); System.out.print(deretan[i]+" ");
} }
} System.out.println(); Estu Sinduningrum, ST, MT
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. a.
Algoritma ini dibangun berdasarkan ide sebagai berikut: 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) Estu Sinduningrum, ST, MT
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.
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 Estu Sinduningrum, ST, MT
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
Ilustrasi Pencarian Biner Estu Sinduningrum, ST, MT
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.
Latihan 41 : PencarianBiner.java
/** * 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");
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);
// 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] +" ");
/* 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])
} 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)
return cariKunci (kunci, deretanTerurut, indeksTerkecil, indeksTengah-1); else if (kunci == deretanTerurut [indeksTengah]) return indeksTengah; else return cariKunci (kunci, deretanTerurut, indeksTengah+1, indeksTerbesar); } } Estu Sinduningrum, ST, MT
TERIMA KASIH