Algoritma & Pemrograman II STT Wastukancana Purwakarta SELECTION SORT Algoritma & Pemrograman II STT Wastukancana Purwakarta Algoritma pengurutan ini disebut pengurutan seleksi karena pada dasarnya adalah memilih elemen maksimum/minimum dari larik, Lalu menempatkan elemen maksimum/minimum itu pada awal atau akhir larik (elemen terujung). Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan pada proses selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu memilih elemen maksimum/minimum berikutnya dan mempertukarkannya dengan elemen terujung larik sisa. Seperti halnya pada algoritma pengurutan gelembung, proses memilih nilai maksimum/minimum dilakukan setiap tahap. Jika larik berukuran n, maka jumlah tahapannya adalah n-1.
Diketahui array satu dimensi yang telah dibuat dengan int A[n] dimana n=7, elemennya sudah terisi sebagai berikut: 1 2 3 4 5 6 A[ ] 15 10 7 22 17 5 12 Susun algoritma untuk mengurutkan isi array tersebut dengan metode SELECTION SORT sehingga nilainya urut menaik (Ascending) seperti berikut: 1 2 3 4 5 6 A[ ] 5 7 10 12 15 17 22
Proses sort dilakukan tahap per tahap. Untuk n=7 maka akan dilakukan (n-1)=6 tahap. Konsep proses SELECTION SORT adalah mencari (memilih) nilai terkecil / terbesar dan menukarnya dengan elemen paling awal (paling kiri) / paling akhir (paling kanan) pada setiap tahap, Sehingga hasil proses tiap tahap dapat digambarkan sebagai berikut: Jumlah Perbandingan (if) dilakukan 1 2 3 4 5 6 Data Awal: 15 10 7 22 17 5 12 Tahap 1 Diproses kolom: 0-6 5 terkecil, maka tukar 5 dengan 15 TAHAP 1: 15 10 7 22 17 5 12 6 kali perbandingan Hasil tahap 1: 5 10 7 22 17 15 12 Tahap 2 Diproses kolom: 1-6 7 terkecil, maka tukar 7 dengan 10 TAHAP 2: 5 10 7 22 17 15 12 5 kali perbandingan Hasil tahap 2: 5 7 10 22 17 15 12 Tahap 3 Diproses kolom: 2-6 10 terkecil, maka tukar 10 dengan dirinya sendiri TAHAP 3: 5 7 10 22 17 15 12 4 kali perbandingan Hasil tahap 3: 5 7 10 22 17 15 12
Tahap 4 Diproses kolom: 3-6 12 terkecil, maka tukar 12 dengan 22 TAHAP 4: 5 7 10 22 17 15 12 3 kali perbandingan Hasil tahap 1: 5 7 10 12 17 15 22 Tahap 5 Diproses kolom: 4-6 15 terkecil, maka tukar 15 dengan 17 TAHAP 5: 5 7 10 12 17 15 22 2 kali perbandingan Hasil tahap 5: 5 7 10 12 15 17 22 Tahap 6 Diproses kolom: 5-6 17 terkecil, maka tukar 17 dengan dirinya sendiri 1 kali perbandingan TAHAP 6: 5 7 10 12 15 17 22 Hasil tahap 6: 5 7 10 12 15 17 22
Kesimpuan tahap per tahap untuk selection sort Jumlah perbandingan (if) dilakukan Jumlah pertukaran 1 2 3 4 5 6 Data Awal: 15 10 7 22 17 5 12 Tahap 1: 5 10 7 22 17 15 12 6 1 Tahap 2: 5 7 10 22 17 15 12 5 1 Tahap 3: 5 7 10 22 17 15 12 4 1 Tahap 4: 5 7 10 12 17 15 22 3 1 Tahap 5: 5 7 10 12 15 17 22 2 1 Tahap 6: 5 7 10 12 15 17 22 1 1 Jumlah: 21 6 Urut setelah Tahap 6 ------- selalu ada: 21 perbandingan = n (n-1)/2 dan selalu ada: 6 pertukaran = (n-1)
Perbandingan bubble sort untuk data yang sebelumnya urut terbalik Jumlah perbandingan (if) dilakukan Jumlah pertukaran 1 2 3 4 5 6 Data Awal: 22 17 15 12 10 7 5 Tahap 1: 17 15 12 10 7 5 22 6 6 Tahap 2: 15 12 10 7 5 17 22 5 5 Tahap 3: 12 10 7 5 15 17 22 4 4 Tahap 4: 10 7 5 12 15 17 22 3 3 Tahap 5: 7 5 10 12 15 17 22 2 2 Tahap 6: 5 7 10 12 15 17 22 1 1 Jumlah: 21 21 Pada bubble sort untuk data yang sebelumnya terurut terbalik, jumlah pemeriksaan dengan instruksi if tetap dilakukan n(n-1)/2 kali, dan setiap perbandingan terjadi pertukaran, sehingga jumlah pertukaran sebanyak n(n-1)/2 kali
Algoritma SELECTION SORT for(i=0; i<n-1; i++){ int imin = i; for(j=i+1; j<n; j++){ if(A[j]<A[imin]) imin=j; } x=A[imin]; A[imin]=A[i]; A[i]=x;
LATIHAN Urutkan array di bawah ini dengan algoritma selection sort