25 - Selection Sort
25 - Selection Sort
Ada beberapa metode pengurutan data dalam algoritma dan pemrograman diantaranya
adalah :
1. Selection Sort
2. Insertion Sort
3. Buble Sort
Namun yang akan dibahas pada materi kali ini adalah Selection Sort.
Selection sort merupakan salah satu metode pengurutan data dengan cara mencari nilai
tertinggi atau terendah dalam suatu deretan data dalam array kemudian menempatkan
nilai tersebut ke tempat semestinya.
Pengurutan data ini dapat berupa pengurutan dari nilai terkecil ke nilai terbesar
(Asscending) atau dari nilai terbesar ke nilai terkecil (Descending).
Langkah-langkah pengurutan :
Misalkan ada sebuah Array A[1:5] seperti di bawah ini. Kemudian datanya kita akan
urutkan dari nilai terkecil ke nilai terbesar (Asscending).
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 12 8 4 7 10 5 3 9 11 6
1. Cari elemen terkecil dari A[1] sampai dengan A[10], maka ditemukan A[7] = 3,
merupakan elemen terkecil.
2. Tukar posisi A[1] dengan A[7],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 12 8 4 7 10 5 3 9 11 6
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 8 4 7 10 5 12 9 11 6
3. Lanjutkan pencarian elemen terkecil mulai dari A[2] sampai dengan A[10], maka
ditemukan A[3] = 4, merupakan elemen terkecil.
4. Tukar posisi A[2] dengan A[3],
Halaman - 1
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 8 4 7 10 5 121 9 11 6
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 8 7 10 5 12 9 11 6
5. Cari elemen terkecil dari A[3] sampai dengan A[10], maka ditemukan A[6] = 5,
merupakan elemen terkecil.
6. Tukar posisi A[3] dengan A[6],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 8 7 10 5 12 9 11 6
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 7 10 8 12 9 11 6
7. Cari elemen terkecil dari A[4] sampai dengan A[10], maka ditemukan A[10] = 6,
merupakan elemen terkecil.
8. Tukar posisi A[4] dengan A[10],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 7 10 8 12 9 11 6
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 10 8 12 9 11 7
9. Cari elemen terkecil dari A[5] sampai dengan A[10], maka ditemukan A[10] = 7,
merupakan elemen terkecil.
10.Tukar posisi A[5] dengan A[10],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 10 8 12 9 11 7
Halaman - 2
sehingga urutannya menjadi :
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 12 9 11 10
11.Cari elemen terkecil dari A[6] sampai dengan A[10], maka ditemukan A[6] = 8,
merupakan elemen terkecil.
12.Tukar posisi A[6] dengan A[6], dalam arti tidak ada perubahan urutan sehingga
urutannya tetap.
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 12 9 11 10
13. Cari elemen terkecil dari A[7] sampai dengan A[10], maka ditemukan A[8] = 9,
merupakan elemen terkecil.
14.Tukar posisi A[7] dengan A[8],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 12 9 11 10
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 9 12 11 10
15.Cari elemen terkecil dari A[8] sampai dengan A[10], maka ditemukan A[10] = 10,
merupakan elemen terkecil.
16.Tukar posisi A[8] dengan A[10],
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 9 12 11 10
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 9 10 11 12
Halaman - 3
17.Cari elemen terkecil dari A[9] sampai dengan A[10], maka ditemukan A[9] = 11,
merupakan elemen terkecil.
18.Tukar posisi A[9] dengan A[9], dalam arti tidak ada perubahan urutan sehingga
urutannya tetap.
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 9 10 11 12
19.Proses pencarian nilai terkecil berhenti sampai disini (N-1). Kita lihat hasilnya adalah
sebagai berikut :
Index : 1 2 3 4 5 6 7 8 9 10
A[i] : 3 4 5 6 7 8 9 10 11 12
Jadi kalau kita susun urutan proses pengurutannya adalah sebagai berikut :
A[1:N]
Start := 1
While (Start < N) Do
/* Mencari nilai terkecil */
min := A[Start]
Pos := Start
i := Start + 1
While (i <= N) Do
If (A[i] <= min) Then
min := A[i]
Pos := i
Endif
i := i + 1
EndWhile
Halaman - 4
/* Tukar posisi nilai terkecil dengan posisi awal pencarian */
A[Pos] := A[Start]
A[Star] := Min
Start := Start + 1
EndWhile
Start min Pos i A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 12 1 2 12 8 4 7 10 5 3 9 11 6
8 2 3 12 8 4 7 10 5 3 9 11 6
4 3 4 12 8 4 7 10 5 3 9 11 6
4 3 5 12 8 4 7 10 5 3 9 11 6
4 3 6 12 8 4 7 10 5 3 9 11 6
4 3 7 12 8 4 7 10 5 3 9 11 6
3 7 8 12 8 4 7 10 5 3 9 11 6
3 7 9 12 8 4 7 10 5 3 9 11 6
3 7 10 12 8 4 7 10 5 3 9 11 6
2 3 7 11 3 8 4 7 10 5 12 9 11 6
2 8 2 3 3 8 4 7 10 5 12 9 11 6
4 3 4 3 8 4 7 10 5 12 9 11 6
4 3 5 3 8 4 7 10 5 12 9 11 6
4 3 6 3 8 4 7 10 5 12 9 11 6
4 3 7 3 8 4 7 10 5 12 9 11 6
4 3 8 3 8 4 7 10 5 12 9 11 6
4 3 9 3 8 4 7 10 5 12 9 11 6
4 3 10 3 8 4 7 10 5 12 9 11 6
3 4 3 11 3 4 8 7 10 5 12 9 11 6
3 8 3 4 3 4 8 7 10 5 12 9 11 6
7 4 5 3 4 8 7 10 5 12 9 11 6
7 4 6 3 4 8 7 10 5 12 9 11 6
5 6 7 3 4 8 7 10 5 12 9 11 6
5 6 8 3 4 8 7 10 5 12 9 11 6
5 6 9 3 4 8 7 10 5 12 9 11 6
5 6 10 3 4 8 7 10 5 12 9 11 6
4 5 6 11 3 4 5 7 10 8 12 9 11 6
4 7 4 5 3 4 5 7 10 8 12 9 11 6
7 4 6 3 4 5 7 10 8 12 9 11 6
7 4 7 3 4 5 7 10 8 12 9 11 6
7 4 8 3 4 5 7 10 8 12 9 11 6
7 4 9 3 4 5 7 10 8 12 9 11 6
7 4 10 3 4 5 7 10 8 12 9 11 6
5 6 10 11 3 4 5 6 10 8 12 9 11 7
5 10 5 6 3 4 5 6 10 8 12 9 11 7
8 6 7 3 4 5 6 10 8 12 9 11 7
8 6 8 3 4 5 6 10 8 12 9 11 7
8 6 9 3 4 5 6 10 8 12 9 11 7
8 6 10 3 4 5 6 10 8 12 9 11 7
6 7 10 11 3 4 5 6 7 8 12 9 11 10
Halaman - 5
6 8 6 7 3 4 5 6 7 8 12 9 11 10
8 6 8 3 4 5 6 7 8 12 9 11 10
8 6 9 3 4 5 6 7 8 12 9 11 10
8 6 10 3 4 5 6 7 8 12 9 11 10
7 8 6 11 3 4 5 6 7 8 12 9 11 10
7 12 7 8 3 4 5 6 7 8 12 9 11 10
9 8 9 3 4 5 6 7 8 12 9 11 10
9 8 10 3 4 5 6 7 8 12 9 11 10
8 9 8 11 3 4 5 6 7 8 9 12 11 10
8 12 8 9 3 4 5 6 7 8 9 12 11 10
11 9 10 3 4 5 6 7 8 9 12 11 10
9 10 10 11 3 4 5 6 7 8 9 10 11 12
9 11 9 10 3 4 5 6 7 8 9 10 11 12
10 11 9 11 3 4 5 6 7 8 9 10 11 12
10 11 9 11 3 4 5 6 7 8 9 10 11 12
---oOo---
Halaman - 6