🧮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 class DaftarMahasiswaBerprestasi

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