Modul 11 : Selection Sort - fzl-22/modul-alpro-informatika GitHub Wiki
Algoritma Selection Sort merupakan salah satu algoritma pengurutan data yang bertujuan untuk mengurutkan elemen-elemen data dari yang terkecil sampai yang terbesar atau sebaliknya. Cara kerja algoritma ini adalah dengan memilih elemen terkecil pada setiap iterasi, kemudian menukarkannya dengan elemen pada indeks yang sesuai. Proses ini dilakukan terus-menerus sampai semua elemen terurut dengan benar. Algoritma ini relatif sederhana, namun tidak efisien dibandingkan dengan algoritma pengurutan lainnya.
Salah satu alasan mengapa selection sort tidak efisien adalah karena ia memerlukan banyak operasi pertukaran untuk mengurutkan elemen-elemen data. Algoritma ini mencari elemen terkecil pada setiap iterasi dan menukarkannya dengan elemen pada indeks yang sesuai, yang berarti ia harus melakukan banyak pertukaran elemen untuk mengurutkan seluruh data. Selain itu, algoritma ini juga memerlukan banyak operasi perbandingan untuk mencari elemen terkecil pada setiap iterasi, yang dapat memperlambat proses pengurutan.
Warna merah merupakan nilai paling kecil yang ditemukan saat ini, nilai ini dapat berubah apabila ditemukan nilai lain yang lebih kecil dalam satu iterasi, warna biru merupakan proses pencarian nilai terkecil pada list, dan warna kuning merupakan list yang telah diurutkan.
Untuk dapat lebih memahami ilustrasi di atas, mari kita pahami proses berjalannya ilustrasi tersebut dengan membedah proses dari tiap iterasinya.
Kita memiliki data [8, 5, 2, 6, 9, 3, 1, 4, 0, 7] dan kita mengurutkannya dengan metode ascending.
Angka di dalam kurung merupakan angka yang telah terurut.
Iterasi 1:
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 8
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 5
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 2
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 2
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 2
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 2
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 1
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 1
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 0
8, 5, 2, 6, 9, 3, 1, 4, 0, 7 → Min 0
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Swap 8 dan 0
Iterasi 2:
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 5
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 2
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 2
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 2
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 2
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 1
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 1
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 1
(0), 5, 2, 6, 9, 3, 1, 4, 8, 7 → Min 1
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Swap 5 dan 1
Iterasi 3:
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1), 2, 6, 9, 3, 5, 4, 8, 7 → Min 2
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Tidak terjadi swap
Iterasi 4:
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 6
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 6
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 3
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 3
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 3
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 3
(0, 1, 2), 6, 9, 3, 5, 4, 8, 7 → Min 3
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Swap 6 dan 3
Iterasi 5:
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 9
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 6
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 5
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 4
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 4
(0, 1, 2, 3), 9, 6, 5, 4, 8, 7 → Min 4
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Swap 9 dan 4
Iterasi 6:
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Min 6
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Min 5
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Min 5
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Min 5
(0, 1, 2, 3, 4), 6, 5, 9, 8, 7 → Min 5
(0, 1, 2, 3, 4, 5), 6, 9, 8, 7 → Swap 6 dan 5
Iterasi 7:
(0, 1, 2, 3, 4, 5), 6, 9, 8, 7 → Min 6
(0, 1, 2, 3, 4, 5), 6, 9, 8, 7 → Min 6
(0, 1, 2, 3, 4, 5), 6, 9, 8, 7 → Min 6
(0, 1, 2, 3, 4, 5), 6, 9, 8, 7 → Min 6
(0, 1, 2, 3, 4, 5, 6), 9, 8, 7 → Tidak terjadi swap
Iterasi 8:
(0, 1, 2, 3, 4, 5, 6), 9, 8, 7 → Min 9
(0, 1, 2, 3, 4, 5, 6), 9, 8, 7 → Min 8
(0, 1, 2, 3, 4, 5, 6), 9, 8, 7 → Min 7
(0, 1, 2, 3, 4, 5, 6, 7), 8, 9 → Swap 9 dan 7
Iterasi 9:
(0, 1, 2, 3, 4, 5, 6, 7), 8, 9 → Min 8
(0, 1, 2, 3, 4, 5, 6, 7), 8, 9 → Min 8
(0, 1, 2, 3, 4, 5, 6, 7, 8), 9 → Tidak terjadi swap
Iterasi 10 :
(0, 1, 2, 3, 4, 5, 6, 7, 8), 9 → Min 9
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) → Tidak terjadi swap (Hasil Akhir)
#include <stdio.h>
int main(){
int angka[10]={8,5,2,6,9,3,1,4,0,7};
//Melakukan looping sebanyak jumlah data
for(int i=0; i<10; i++){
//Anggap index ke i adalah angka terkecil
int indexNilaiMinimal=i;
//Looping untuk mencari angka yang terkecil dengan membandingkan setiap angka
for(int j=i; j<10; j++){
//Jika ada yang lebih kecil dari angka index ke indexNilaiMinimal
if(angka[j]<angka[indexNilaiMinimal]){
//maka, ganti indexNilaiMinimal menjadi index angka tersebut
indexNilaiMinimal=j;
}
}
//Swap value
int temp=angka[i];
angka[i]=angka[indexNilaiMinimal];
angka[indexNilaiMinimal]=temp;
}
//Cetak data
for(int i=0; i<10; i++){
printf("%d ", angka[i]);
}
}
Buatlah program yang menerima input dari user berupa jumlah tim dan skor dari tiap tim (3 skor), lalu jumlahkan skor dari setiap tim dan urutkan hasil penjumlahan skor dari yang terbesar menggunakan selection sort..
Input 1:
Jumlah Tim : 3
Skor tim 1 : 30 40 20
Skor tim 2 : 10 30 20
Skor tim 3 : 80 50 40
Output 1:
170
90
50
Input 2:
Jumlah Tim : 3
Skor Tim 1 : 40 40 40
Skor Tim 2 : 30 30 30
Skor Tim 3 : 35 35 35
Output 2:
120
105
90