🧮Praktikum 1: Sorting
Pengantar
Perhatikan class diagram dari Mahasiswa dan DaftarMahasiswaBerprestasi berikut ini,


Berdasarkan kedua class diagram tersebut, pada percobaan ini kita akan membuat array of objects berisi mahasiswa berprestasi. Jumlah mahasiswa beprestasi yang disimpan didalam objek adalah 5. Terdapat beberapa fungsi didalam class Mahasiswa dan DaftarMahasiswaBerprestasi yang akan digunakan pada proses sorting.
Sorting dengan Selection Sort
Langkah-langkah Percobaan
Buatlah sebuah proyek baru dengan nama "Sorting".
Buatlah sebuah class baru dengan nama "
Mahasiswa
". Gunakan kode dibawah ini untuk membuat class Mahasiswa.
public class Mahasiswa {
public String nama;
public int thnMasuk, umur;
public double ipk;
Mahasiswa(String n, int t, int u, double i {
this.nama = n;
this.thnMasuk = t;
this.umur = u;
this.ipk = i;
}
public void tampil() {
System.out.println("Nama = "+nama);
System.out.println("Tahun Masuk = "+thnMasuk);
System.out.println("Umur = "+umur);
System.out.println("IPK = "+ipk);
}
}
Buatlah class "
DaftarMahasiswaBerprestasi
" sesuai dengan class diagram yang telah disediakan.
public class DaftarMahasiswaBerprestasi {
Mahasiswa listMhs[] = new Mahasiswa[5];
int idx;
// method tambah()
// method tampil()
// method selectionSort()
}
Buatlah method "
tambah()
" didalam classDaftarMahasiswaBerprestasi
// method tambah()
public void tambah(Mahasiswa m) {
if(idx<listMhs.length) {
listMhs[idx] = m;
idx++;
} else {
System.out.println("Data sudah penuh!");
}
}
Tambahkan method "
tampil()
". Method ini digunakan untuk menampilkan semua daftar mahasiswa berprestasi.
// method tampil()
public void tampil() {
// fungsi loop for berikut
// akan melakukan looping
// sejumlah objek didalam list
// secara langsung
for (Mahasiswa m : listMhs) {
m.tampil()
System.out.println("----------------------");
}
}
Kemudian buatlah method "
selectionSort()
" yang digunakan untuk melakukan pengurutan data mahasiswa berprestasi dengan algoritma selectionSort.
// method selectionSort()
public void selectionSort() {
for(int i=0; i<listMhs.length-1; i++) {
int idxMin = i;
for(int j=i+1; j<listMhs.length; j++) {
if(listMhs[j].ipk < listMhs[idxMin].ipk) {
idxMin = j
}
}
// swap
Mahasiswa tmp = listMhs[idxMin];
listMhs[idxMin] = listMhs[i];
listMhs[i] = tmp;
}
}
Buatlah main class untuk mengeksekusi program sorting yang Anda buat.
public class Main {
public static void main(String[] args) {
DaftarMahasiswaBerprestasi list = new DaftarMahasiswaBerprestasi();
Mahasiswa m1 = new Mahasiswa("Nusa", 2017, 25, 3);
Mahasiswa m2 = new Mahasiswa("Rara", 2012, 19, 4);
Mahasiswa m3 = new Mahasiswa("Dompu", 2018, 19, 3.5);
Mahasiswa m4 = new Mahasiswa("Abdul", 2017, 23, 2);
Mahasiswa m5 = new Mahasiswa("Ummi", 2019, 21, 3.75);
list.tambah(m1);
list.tambah(m2);
list.tambah(m3);
list.tambah(m4);
list.tambah(m5);
System.out.println("Data mahasiswa sebelum sorting = ");
list.tampil();
System.out.println("Data mahasiswa setelah sorting asc berdasarkan ipk = ");
list.selectionSort()
list.tampil();
}
}
Verifikasi Hasil Percobaan --> Sebelum Sorting
Verifikasi Hasil Percobaan --> Setelah Sorting
Sorting dengan Insertion Sort
Langkah-langkah Percobaan
Pada percobaan ini, kita akan menggunakan seluruh komponen utama pada class Mahasiswa
dan DaftarMahasiswaBerprestasi
yang telah dibuat. Dalam praktrikum ini kita hanya menambahkan method "insertionSort()
" dan sedikit modifikasi pada main class.
Tambahkan method "insertionSort()" pada class
DaftarMahasiswaBerprestasi
.
// method insertionSort()
public void insertionSort() {
for(int i=1; i<listMhs.length; i++) {
Mahasiswa temp = listMhs[i];
int j = i;
while(j > 0 && listMhs[j-1].ipk > temp.ipk) {
listMhs[j] = listMhs[j-1];
j--;
}
listMhs[j] = temp;
}
}
Kemudian tambahkan kode berikut kedalam main class
System.out.println("Data mahasiswa setelah sorting asc berdasarkan ipk = ");
list.insertionSort()
list.tampil();
Verifikasi hasil percobaan. Apakah menghasilkan hasil yang sama dengan selection sort? Mana yang lebih cepat?
Last updated