Modul ASD Minggu 4 Elementary...

11
Modul ASD Minggu 4 Elementary Sorting Pada modul ini, dibahas dua implementasi algoritma sorting, yaitu selection sort dan insertion sort. Selain itu, pada modul ini juga dibahas penggunaan sorting yang disediakan java menggunakan Array.sort. Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma. 2. Jika Anda sudah memahami idenya, cobalah untuk menuliskan pseudocode dari masing-masing algoritma. Anda dapat mencocokkan pseudocode yang Anda buat dengan pseudocode yang ada di bawah ini. Pseudocode yang Anda mungkin saja sedikit berbeda dengan yang diberikan namun bukan berarti itu tidak tepat. 3. Setelah menuliskan pseudocode dan memastikan bahwa pseudocode tersebut benar, cobalah untuk mengimplementasikan pseudocode tersebut dalam Java. A. Selection Sort 1. Ide dasar dan Pseudocode Ide dasar dari selection sort adalah memilih sebuah elemen kemudian menempatkannya pada awal/akhir daerah yang terurut. Misalnya akan dilakukan sorting terhadap sebuah array A sehingga semua elemen dalam A akan terurut menaik, maka: a. Pertama-tama yang dilakukan adalah memilih elemen terkecil lalu tukar posisinya dengan A[1]. Dengan demikian sudah terdapat daerah terurut, yaitu pada indeks ke- 1. b. Selanjutnya, pilih elemen terkecil kedua dan tukarkan posisinya dengan A[2]. c. Lakukan hal ini untuk n-1 elemen pertama yang ada pada A. Dengan kata lain, lakukan hal ini sampai hanya tersisa 1 elemen pada A. Perhatikan ilustrasi di bawah ini untuk lebih jelasnya. 31 19 7 -1 25 64 100 10 Kondisi awal dari array A.

Transcript of Modul ASD Minggu 4 Elementary...

Page 1: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

Modul ASD Minggu 4

Elementary Sorting

Pada modul ini, dibahas dua implementasi algoritma sorting, yaitu selection sort dan insertion

sort. Selain itu, pada modul ini juga dibahas penggunaan sorting yang disediakan java

menggunakan Array.sort.

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini:

1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

2. Jika Anda sudah memahami idenya, cobalah untuk menuliskan pseudocode dari masing-masing

algoritma. Anda dapat mencocokkan pseudocode yang Anda buat dengan pseudocode yang ada

di bawah ini. Pseudocode yang Anda mungkin saja sedikit berbeda dengan yang diberikan namun

bukan berarti itu tidak tepat.

3. Setelah menuliskan pseudocode dan memastikan bahwa pseudocode tersebut benar, cobalah

untuk mengimplementasikan pseudocode tersebut dalam Java.

A. Selection Sort

1. Ide dasar dan Pseudocode

Ide dasar dari selection sort adalah memilih sebuah elemen kemudian menempatkannya pada

awal/akhir daerah yang terurut. Misalnya akan dilakukan sorting terhadap sebuah array A sehingga semua

elemen dalam A akan terurut menaik, maka:

a. Pertama-tama yang dilakukan adalah memilih elemen terkecil lalu tukar posisinya dengan A[1].

Dengan demikian sudah terdapat daerah terurut, yaitu pada indeks ke- 1.

b. Selanjutnya, pilih elemen terkecil kedua dan tukarkan posisinya dengan A[2].

c. Lakukan hal ini untuk n-1 elemen pertama yang ada pada A. Dengan kata lain, lakukan hal ini

sampai hanya tersisa 1 elemen pada A.

Perhatikan ilustrasi di bawah ini untuk lebih jelasnya.

31 19 7 -1 25 64 100 10

Kondisi awal dari array A.

Page 2: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

i

min

-1 7 10 19 25 31 100 64

-1 7 10 19 25 31 64 100 Kondisi akhir array A

Berikut ini adalah pseudocode untuk selection sort untuk mengurutkan elemen-elemen pada array

secara non-decreasing.

1. input: unsorted array A with length=n

2.

output: increasingly sorted array A with length=n

3. SELECTION_SORT(A)

4. for i=1 to n-1 do

5. idxmin=i

6. for j=i+1 to n do

7. if A[j]<A[idxmin] then

8. idxmin=j

9. temp=A[i]

10. A[i]=A[idxmin]

11. A[idxmin]=temp

Page 3: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

Baris ke-4 dari pseudocode di atas adalah tahapan penentuan posisi terhadap elemen terkecil ke-i

di dalam array A. Artinya, elemen terkecil ke-i akan ditempatkan pada indeks ke-i pada array A.

Selanjutnya harus dicari elemen terkecil ke-i tersebut dengan cara menelusuri A mulai dari indeks ke-

(i+1) sampai dengan indeks ke-n. Bagian ini ditangani oleh baris ke-6 sampai baris ke-8 dari pseudocode

di atas. Setelah elemen terkecil ke-i ditemukan, maka elemen terkecil ke-i tersebut harus ditempatkan

pada indeks ke-i. Hal ini dilakukan pada baris ke-9 sampai baris ke-11 dari pseudocode di atas.

2. Implementasi dalam Java

(Kerjakan bagian implementasi dalam Java ini dan kumpulkan di e-learning – M0401xxyyy.jar)

Lalu bagaimana mengimplementasikan pseudocode di atas dalam Java? Tidak ada perbedaan yang

berarti antara pseudocode di atas dengan implementasinya dalam Java. Yang berbeda adalah bahwa pada

pseudocode, indeks dari array dimulai dari 1 sedangkan pada Java, indeks dari array dimulai dari 0. Berikut

ini adalah contoh implementasi selection sort dalam Java.

a. Buatlah sebuah kelas dengan nama SelectionSort. Kelas ini memiliki atribut berupa array of

int dengan nama myArray. Tambahkan juga konstruktor untuk kelas ini dengan parameter

sebuah array of int yang akan mengisi atribut myArray pada kelas ini.

b. Selanjutnya, buatlah method public int sort(int[] array). Method ini mengimplementasikan

pseudocode dari selection sort di atas.

c. Untuk keperluan pengujian, buatlah kelas TesterSelection seperti di bawah ini.

Page 4: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

Spesifikasi input:

Input diawali oleh sebuah bilangan bulat ukuranArray yang menyatakan ukuran array.

ukuranArray baris berikutnya adalah terdiri dari bilangan bulat 𝑝 (−100 ≤ 𝑝 ≤ 100) yang

menjadi isi dari array tersebut.

Spesifikasi output:

Semua elemen dari array yang sudah terurut

Contoh input 1:

8

31 19 7 -1 25 64 100 10

Contoh output 1:

-1 7 10 19 25 31 64 100

Contoh input 2:

15

2 3 0 1 2 1 -100 -5 -3 29 18 20 80 100 17

Contoh output 2:

-100 -5 -3 0 1 1 2 2 3 17 18 20 29 80 100

B. Insertion Sort

1. Ide dasar dan Pseudocode

Ide dasar dari insertion sort adalah menempatkan sebuah elemen dari array ke sebuah sub-array

(suatu bagian dari array) yang semua elemennya sudah terurut. Untuk melakukan sorting pada sebuah

array A sehingga semua elemen pada A terurut menaik, langkah-langkahnya adalah sebagai berikut.

Page 5: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

a. Elemen pertama sudah termasuk dalam sub-array yang terurut. Mengapa demikian? Pada

awalnya, sub-array ukurannya satu, yaitu hanya pada indeks pertama dari array. Karena sub-

array tersebut hanya mengandung 1 buah elemen yaitu elemen pertama dari array, maka sub-

array tersebut sudah terurut dan mengandung elemen yang pertama.

b. Masukkan elemen kedua pada sub-array yang terurut pada posisi yang tepat sehingga subarray

tersebut tetap terurut setelah elemen kedua dimasukkan.

c. Ulangi proses tersebut pada elemen selanjutnya yang belum terurut sehingga ukuran dari sub-

array yang terurut terus bertambah.

d. Lanjutkan hingga elemen terakhir masuk ke sub-array yang terurut sehingga diperoleh sebuah

array yang sudah terurut.

Perhatikan ilustrasi di bawah ini untuk lebih memahami bagaimana insertion sort bekerja. Kotak

berwarna biru merupakan sub-array dari array A, sedangkan kotak berwarna kuning merupakan elemen

pada array yang akan dimasukkan ke dalam sub-array yang terurut.

31 19 7 -1 25 64 100 10 Kondisi awal array A.

-1 7 10 19 25 31 64 100 Kondisi akhir array A.

31 19 7 - 1 25 64 100 10

Page 6: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

Berikut ini adalah pseudocode dari insertion sort.

1. input: unsorted array A with length n

2.

output: non-decreasingly sorted array A with length n

3. INSERTION_SORT(A)

4. for i=2 to n do

5. key=A[i]

6. j=i-1;

7. while(j>=0) AND A[j]>key

8. A[j+1]=A[j]

9. j=j-1

10.

A[j+1]=key

2. Implementasi

(Kerjakan bagian implementasi dalam Java ini dan kumpulkan di e-learning – M0402xxyyy.jar)

a. Buatlah sebuah kelas dengan nama InsertionSort. Kelas ini memiliki atribut bertipe array of int

dengan nama myArray. Tambahkan juga konstruktor untuk kelas ini dengan parameter sebuah

array of int yang akan mengisi atribut myArray pada kelas ini.

b. Pada kelas InsertionSort, buatlah method public int[] sort() untuk mengimplementasikan

insertion sort.

c. Buatlah kelas TesterInsertion untuk melakukan pengujian.

Page 7: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

Spesifikasi input:

Input diawali oleh sebuah bilangan bulat ukuranArray yang menyatakan ukuran array.

ukuranArray baris berikutnya adalah terdiri dari bilangan bulat p (-100≤p≤100) yang menjadi isi

dari array tersebut.

Spesifikasi output:

Semua elemen dari array yang sudah terurut

Contoh input 1:

8

31 19 7 -1 25 64 100 10

Contoh output 1:

-1 7 10 19 25 31 64 100

Contoh input 2:

15

2 3 0 1 2 1 -100 -5 -3 29 18 20 80 100 17

Contoh output 2:

-100 -5 -3 0 1 1 2 2 3 17 18 20 29 80 100

3. Sorting di Java

Java menyediakan method static untuk sorting. Method ini disediakan oleh kelas Arrays.

Untuk menggunakannya, terlebih dahulu harus dilakukan import pada java.util.Arrays.

Page 8: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

a. Menggunakan Arrays.sort untuk Tipe Data Primitif

Berikut ini adalah contoh penggunaan Arrays.sort untuk mengurutkan elemen-elemen yang

terdapat pada array of int.

b. Menggunakan Arrays.sort untuk Object

(Kerjakan bagian implementasi dalam Java ini dan kumpulkan di e-learning – M0403xxyyy.jar)

Untuk mengurutkan array of object, maka kelas dari object tersebut harus mengimplementasikan

interface Comparabel, kemudian melakukan override pada method compareTo. Contoh di bawah ini

adalah penggunaan Arrays.sort untuk mengurutkan object dari kelas mahasiswa berdasarkan IPK yang

dimiliki dan banyaknya SKS lulus dari mahasiswa tersebut. 1) Buatlah kelas bernama Mahasiswa. Kelas

ini memiliki atribut namaMahasiswa: String, dan

2) Lakukan override pada method compareTo.

Pada saat melakukan override pada method compareTo, yang perlu diperhatikan

adalah return value dari method tersebut. Ketika membandingkan dua buah objek

(objek A dan objek B) berdasarkan suatu key, maka:

- Kembalikan nilai negatif jika key dari objek A lebih kecil daripada key dari objek B. -

Kembalikan nilai positif jika key dari objek A lebih besar daripada key dari objek B.

- Kembalikan nilai 0 jika key dari objek A sama dengan key dari objek B.

Misalnya, akan dibandingkan umur (umur sebagai key) dari objek orang1 dan objek orang2,

maka:

- Kembalikan nilai negatif apabila umur dari orang1 lebih kecil daripada orang2.

- Kembalikan nilai positif apabila umur dari orang1 lebih kecil daripada orang2.

- Kembalikan nilai 0 apabila umur dari orang1 sama dengan umur dari orang2. Pada contoh

ini mahasiswa akan diurutkan berdasarkan indeks prestasinya secara menaik. Apabila ada

mahasiswa yeng memiliki indeks prestasi yang sama, maka mahasiswa yang sks lulusnya

lebih banyak yang akan berada pada indeks lebih kanan dari array.

atribut indeksPrestasi: double. Buatlah konstruktor untuk kelas ini!

Page 9: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

3) Lakukan override pada method toString untuk mencetak atribut-atribut dari objek Mahasiswa

dalam sebuah String.

4) Tambahkan kelas Tester untuk membantu Anda melakukan pengujian.

Spesifikasi Input:

Input diawali dengan sebuah bilangan bulat banyakMahasiswa (0<banyakMahasiswa≤100) yang

menyatakan jumlah mahasiswa yang akan dicatat datanya. banyakMahasiswa baris berikutnya terdiri dari

Page 10: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

1 buah String nama (tanpa spasi), bilangan decimal yang menyatakan indeksPrestasi, dan 1 buah bilangan

bulat yang menyatakan jumlah sks lulus.

Spesifikasi output:

Data mahasiswa yang sudah terurut

Contoh input 1:

5

Anita 3.50 55

Budi 3.73 55

Charlie 2.00 100

Darwin 1.5 63

Esa 2.35 77

Contoh output 1:

1.Darwin 1.5 63

2.Charlie 2.0 100

3.Esa 2.35 77

4.Anita 3.5 55

5.Budi 3.73 55

Contoh input 2:

10

Anita 3.50 55

Budi 3.73 55

Charlie 2.00 100

Darwin 1.5 63 Esa

2.35 77

Fikri 3.30 80

Givan 3.50 80

Hendra 2.00 36

Indra 0.54 10

Josua 2.54 18

Contoh output 2:

1.Indra 0.54 10 2.Darwin

1.5 63

3.Hendra 2.0 36

4.Charlie 2.0 100

Page 11: Modul ASD Minggu 4 Elementary Sortinginformatika.unpar.ac.id/.../sites/19/2017/09/04Modul-Basic-Sorting.pdf... dibahas dua implementasi algoritma sorting, ... pseudocode yang Anda

5.Esa 2.35 77

6.Josua 2.54 18

7.Fikri 3.3 80 8.Anita

3.5 55

9.Givan 3.5 80

10.Budi 3.73 55

Untuk memastikan bahwa Anda sudah memahami bagian ini, cobalah untuk melakukan sorting secara menurun pada kelas Mahasiswa tersebut berdasarkan indeksPrestasi dan sksLulus.