Dokumen ini menjelaskan algoritma selection sort untuk mengurutkan elemen data. Selection sort bekerja dengan mencari elemen terkecil di setiap iterasi dan menempatkannya di posisi yang sesuai. Proses ini diulang hingga semua elemen terurut dengan kompleksitas rata-rata O(n2). Contoh kode C++ juga ditunjukkan beserta pseudocode umum algoritmanya.
2. Pendahuluan
Selection sort adalah cara pengurutan dengan menelusuri
dan mencari elemen yang terkecil / terbesar dari seluruh
elemen yang ada dan menempatkannya di posisi pertama
sampai semua elemen terurut dengan pengulangan.
3. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi pertama)
● Delapan dipilih sebagai elemen terkecil
● Bandingkan dengan elemen-elemen
berikutnya (8 dengan 1)
8
1
4
2
6
3
7
0
5
9
4. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi pertama)
● 1 < 8, 1 dijadikan elemen terkecil
● Bandingkan dengan elemen-elemen
berikutnya (1 dengan 4)
● Karena 1 < 4 , elemen terkecil tetap 1 dan
lanjutkan perbandingan
8
1
4
2
6
3
7
0
5
9
5. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi pertama)
● 1 < 2, 1 tetap sebagai elemen terkecil
● Bandingkan dengan elemen-elemen
berikutnya (1 dengan 2)
● Karena 1 < 2, lanjutkan perbandingan
8
1
4
2
6
3
7
0
5
9
6. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi pertama)
● Sampai bertemu dengan 0, Elemen terkecil
menjadi 0 untuk iterasi pertama dan iterasi
akan selesai karena tidak ada elemen yang
< 0
8
1
4
2
6
3
7
0
5
9
7. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi pertama)
● Tempatkan 0 di posisi pertama dan tukar
posisi elemen pertama dengan posisi
elemen 0
0
1
4
2
6
3
7
8
5
9
8. Contoh: Proses Pengurutan Menaik
Langkah: (untuk posisi kedua)
● Mulai kembali dari posisi kedua yaitu 1
sebagai elemen terkecil dan pembanding
● Bandingkan 1 dengan elemen berikutnya
(4)
...
● Setelah iterasi kedua selesai, dan elemen
posisi kedua didapat, mulai dengan elemen
ke-3, dst ...
0
1
4
2
6
3
7
8
5
9
9. Pseudocode
procedure selectionSort( Output/Input A : list of sortable items )
/* A - array berisi kumpulan angka */
/* numItems - jumlah elemen dalam list */
for i = 0 to numItems - 1 do
begin
for j = i+1 to numItems do
begin
if A[i] > A[j]
// Tukar posisi
Temp = A[i]
A[i] = A[j]
A[j] = Temp
end
end
10. Kode dalam C++
void selectionSort(int arr[], int n) {
int pos_min,temp; // pos_min adalah posisi dari minimum
for (int i=0; i < n-1; i++) {
pos_min = i; // set pos_min sebagai index pertama di array
for (int j=i+1; j < n; j++) {
if (arr[j] < arr[pos_min])
pos_min=j; // jika ditemukan yang lebih kecil, set posisi min-nya
}
// tukar posisi karena pos_min tidak sama dengan i (ada nilai yang lebih kecil)
if (pos_min != i) {
temp = arr[i];
arr[i] = arr[pos_min];
arr[pos_min] = temp;
}
}
}
}
11. Kode dalam C++ - (main)
#include <iostream>
using namespace std;
int main()
{
int numbers[] = { 8, 40, 1, 5, 0, 9, 6, 4, 3, -1, 5 };
selectionSort(numbers, 10);
for (int i=0; i<10; i++) {
cout << numbers[i];
cout << " | ";
}
}