ARRAY. 7 th week Estu Sinduningrum ST,MT

dokumen-dokumen yang mirip
Modul Praktikum 4 Pemograman Berorientasi Objek

Array. Pengantar. int a, b, c, d, e;

Larik/ Array int a1, a2, a3, a4, a5;

Percabangan & Perulangan

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Modul Praktikum Bahasa Pemrograman 1

Pemrograman Dasar A R R A Y

Array Pendeklarasian Array

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

OPERASI PERNYATAAN KONDISI

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

Tipe data primitif adalah tipe data dasar yang dikenali oleh Java dan bukan merupakan class. Tipe data primitif ini dapat dikenali dengan ciri

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

BAB 7 Java Array. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variabel.

Dasar Pemrograman Java

Perulangan / Looping

Array 1 Dimensi pada Java

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

MODUL 3 ARRAY. Pemograman Berorientasi Objek

Modul 3: Kendali program dan teknik. penyimpanan data

PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

BAB 7. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier berbeda untuk tiap variabel.

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

REVIEW ARRAY. Institut Teknologi Sumatera

A. TEORI ARRAY 1 DIMENSI

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

A. TEORI ARRAY 1 DIMENSI

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Pertemuan 4 Array pada Java

a. Array berdimensi satu o Setiap elemen array dapat diakses melalui indeks. o Indeks array (subscript) secara default dimulai dari 0.

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

Method / Fungsi / Sub Program

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

A. TUJUAN PEMBELAJARAN

SUMBER BELAJAR PENUNJANG PLPG

Percabangan dan Perulangan

MATERI PRAKTIKUM 2 ARRAY

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Array. Adharul Muttaqin Universitas Brawijaya Malang. Array

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Penerapan Algoritma Brute Force di Permainan Nonogram

TPI4202 e-tp.ub.ac.id. Lecture 5 Mas ud Effendi

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

Modul Praktikum 3 Pemograman Berorientasi Objek

Tes Asisten Praktikum Alpro Lanjut

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Searching ( Pencarian ) Modul III

Tipe Data dan Operator

Pemrograman Berorientasi Objek (PBO) PERTEMUAN X (LOOPING)

Algoritma dan Pemrograman Array/Tabel[1] Oleh: Eddy Prasetyo N

Penyeleksi Kondisi / Percabangan

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.

Modul 3 Flow Control dan Input

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

Lecture Notes Algoritma dan Pemrograman

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

Array 1 A. TUJUAN PEMBELAJARAN

JAVA BASIC PROGRAMMING Joobshet

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

int fungsi_2() { int main() { fungsi_1(); fungsi_2(); return 0;

Struktur Kontrol. Gambar 1: Flowchart Statement If

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Obyektif : KONTROL ALUR PROGRAM

Tujuan Instruksional. Mahasiswa mampu :

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Struktur Kontrol Pemrograman Java : PERCABANGAN

A. TUJUAN PEMBELAJARAN

BAB 5 PERULANGAN DAN ARRAY

Perulangan, Percabangan, dan Studi Kasus

Algoritma Searching Tenia wahyuningrum, S.Kom. MT dan Sisilia Thya Safitri, MT

Modul 3 Percabangan dan Perulangan

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Pencarian (Searching)

Array Multidimensi. Pemrograman Dasar. Java

Metode Binnary Searching di Java Console

Politeknik Elektronika Negeri Surabaya

PRAKTIKUM PEMROGRAMAN LANJUT MODUL 1

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 4 CONTROL FLOW STATEMENT

Gambar 13.1 Ilustrasi proses algoritma sorting

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

BAB V. STATEMEN KONTROL

BAB II VARIABEL DAN TIPE DATA

Bahasa Pemrograman :: Dasar Pemrograman Java

2 TIPE DATA DAN VARIABEL

Pertemuan 2 Struktur Kontrol Percabangan

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Bahasa Pemrograman 2.

ARRAY, SORTING & SEARCHING

TIPE DATA Pertemuan (K-03/L-03)

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Transkripsi:

ARRAY 7 th week Estu Sinduningrum ST,MT

Aplikasi 2x 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.

/** * 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 () ; } } }

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.

/** * 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 8 th week Estu Sinduningrum ST,MT

Definisi Larik Larik atau array dapat didefinisikan sebagai tabel yang terstruktur. Semua array terdiri dari tabel 2 yang dapat diisi dengan variabel 2 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.

Definisi Larik Array adalah: Suatu entitas (kesatuan) yang beranggotakan elemenelemen/ variabel bertipe data sama dan dapat diakses dengan memanggil nama array beserta indeks elemennya

Definisi Larik Variabel array dapat dideklarasikan dengan dua cara: 1. tipedata [ ] namaarray; atau 2. tipedata namaarray [ ]; // Bentuk ini sering dipakai

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

Array 1 tingkat

Array 1 tingkat

Array 1 tingkat

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.

Array 2 tingkat

Array 2 tingkat

Array 2 tingkat

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.

Ilustrasi array

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.

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.

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; }

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.

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.

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

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];

Susunan elemen array multidimensi

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.

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.

Latihan 38 : Operasi Matriks Cij = aij x b1j + ai2 x b2j + ai2 x b2j

/** 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)

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).

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.

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.

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 } Sinduningrum, } ST, MT

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.

Latihan 40 : Mencari Elemen Array (Searching)

/** * 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.

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.

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.

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.

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

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.

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"); // 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