/** Tugas 2 Kelas C Program ini diperuntukan untuk kelas C. Program ini akan membuat Array satu dimensi dengan panjang n yang diisi dengan sembarang angka, dan kemudian diurutkan. Fokus analisis Anda adalah pada algoritma pengurutannya. */ // diperlukan untuk menampilkan isi Array yang dibuat import java.util.Arrays; // diperlukan untuk membantu dalam membuat isi Array yang akan diurutkan import java.util.Random; /** Anda sengaja diberikan kode program untuk dianalisis karena fokus dari Tugas ini adalah pada logika untuk melakukan analisis. Ingat: Anda diizinkan untuk memodifikasi kode program ini sesuai dengan kebutuhan analisis yang Anda lakukan. */ public class Tugas2KelasC{ /** Method yang akan dipanggil pertama kali ketika progam JavaTM dijalankan. */ public static void main(String[] args){ // flag untuk mencetak data boolean cetakFlag = true; // jumlah data yang akan diurutkan int jumlahData = 10; // baca data yang akan diurutkan int[] data = Tugas2KelasC.getData(jumlahData); // cetak data awal if(cetakFlag) // tampilkan data awal System.out.println("Data awal:\n" + Arrays.toString(data)); // urutkan data Tugas2KelasC.urutkan(data); /// cetak data akhir if(cetakFlag) // tampilkan data awal System.out.println("\nData akhir:\n" + Arrays.toString(data)); } /** Mengurutkan data yang diberikan dari besar ke kecil menggunakan salah satu teknik pengurutan dasar. Tidak ada yang perlu dikembalikan ke pemanggil karena Array merupakan tipe data reference sehingga perubahan sekecil apapun akan dibaca oleh semua variabel yang menunjuk ke data tersebut. @param data Array yang akan diurutkan */ public static void urutkan(int[] data){ // lakukan logika yang sama berkali-kali for(int i = 0; i < data.length - 1; i++){ // pindahkan data terbesar satu per-satu ke elemen terdepan for(int j = data.length - 1; j > i; j--){ if(data[j] > data[j - 1]) Tugas2KelasC.swap(data, j, j - 1); } } } /** Tukar data yang ditunjuk oleh index1 dan index2. Tidak ada yang perlu dikembalikan ke pemanggil karena Array merupakan tipe data reference sehingga perubahan sekecil apapun akan dibaca oleh semua variabel yang menunjuk ke data tersebut. @param data Array dari data yang akan ditukar @param index1 posisi salah satu data yang akan ditukar @param index2 posisi salah satu data yang akan ditukar */ public static void swap(int[] data, int index1, int index2){ // salin data yang ditunjuk index1 int temp = data[index1]; // pindahkan data yang ditunjuk index2 ke index1 data[index1] = data[index2]; // pindahkan data yang disalin ke index2 data[index2] = temp; } /** Membuat sebuah Array sebanyak jumlah data dan setiap elemen diisi dengan sembarang angka. @param jumlahData panjang data yang diperlukan @return sebuah Array dengan sepanjang jumlah data yang berisi sembarang angka. */ public static int[] getData(int jumlahData){ // buat Array kosong sepanjang jumlahData int[] data = new int[jumlahData]; // buat objek Random untuk mentukan sembarang bilangan Random rand = new Random(); // angka maksimum int maxNumber = 1500000; // inisialisasi setiap elemen Array for(int i = 0; i < jumlahData; i++) data[i] = rand.nextInt(maxNumber); // kembalikan Array data yang sudah diinisialisasi dengan sembarang angka return data; } }