Selection sort merupakan salah satu metode pengurutan data dengan cara mencari nilail terkecil ke kanan, lalu jika sudah ditemukan ditukar/dipindah ke kiri. Selection sort memiliki kompleksitas O(n2) sehingga tidak akan efisien untuk data dengan jumlah yang besar.
Untuk lebih jelasnya, berikut merupakan proses pencaria data menggunakan selection sort :
• Langkah pengurutan
Proses 1
2 | 15 | 20 | 5 | 13 | 25 | 7 |
Pembanding | Posisi |
2 < 15 | 0 |
2<20 | 0 |
2<5 | 0 |
2<13 | 0 |
2<25 | 0 |
2<7 | 0 |
Data ke-0 merupakan nilai minimum
2 | 15 | 20 | 5 | 13 | 25 | 7 |
- Proses 2
Pembanding | Posisi |
15<20 | 1 |
15>5(tukar idx) | 3 |
5<13 | 3 |
5<25 | 3 |
5<7 | 3 |
Tukar data ke-1 (15) dengan data ke-3 (5)
2 | 5 | 20 | 15 | 13 | 25 | 7 |
- Proses 3
Pembanding | Posisi |
20>15(tukar idx) | 3 |
15>13(tukar idx) | 4 |
13<25 | 4 |
13>7(tukar idx) | 6 |
Tukar data ke-3 (20) dengan data ke-6 (7)
2 | 5 | 7 | 15 | 13 | 25 | 20 |
- Proses 4
Pembanding | Posisi |
15>13(tukar idx) | 4 |
13<25 | 4 |
13>20 | 4 |
Tukar data ke-3 (15) dengan data ke-4 (13)
2 | 5 | 7 | 13 | 15 | 25 | 20 |
- Proses 5
Pembanding | Posisi |
15<25(tukar idx) | 4 |
15>20 | 4 |
Tukar data ke-4 (15) dengan data ke-4 (15)
2 | 5 | 7 | 13 | 15 | 25 | 20 |
- Proses 6
Pembanding | Posisi |
25>20(tukar idx) | 6 |
Tukar data ke-5 (20) dengan data ke-6 ()
2 | 5 | 7 | 13 | 15 | 20 | 25 |
Notasi Algoritmik Selection Sort :
Implementasi dengan C:
#include <stdio.h> void swap(int *xp, int *yp) { int temp = *xp; *xp = *yp; *yp = temp; } void selectionSort(int arr[100], int n) { int i,j,a,min_idx; for (i = 0; i < n-1; i++) { // Menggunakan elemen minimum pada array min_idx = i; for (j = i+1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; // Tukar posisi elemen minimum array pada posisi array pertama swap(&arr[min_idx], &arr[i]); for(a = 0; a < n; a++){ printf("%d ", arr[a]); } printf("\n"); } } int main(){ int arr[100]; int n,a; //Input panjang array printf("Masukkan panjang array : "); scanf("%d", &n); //Input elemen array printf("Masukkan elemen array: \n"); for(a = 0; a < n; a++){ scanf("%d", &arr[a]); } //Array terurut printf("\nLangkah-langkah pengurutan : \n"); selectionSort(arr,n); return 0; }