Selection Sort Merupakan sebuah algoritma pengurutan yang mencari element terkecil dari suatu list data tidak terurut (unsorted list) kemudian menukarnya dengan element pertama pada list data tidak terurut (first unsorted list) sehingga menghasilkan list data terurut (sorted list). Proses ini dilakukan secara berulang (loop) sampai mendapatkan list data yang terurut secara keseluruhan (fully sorted list)
Algoritma Cari element terkecil dari list data belum terurut. Tukar dengan element pertama data belum terutur. Maka akan menghasilkan list data terurut Ulangi langkah 1 – 3 sampai mendapatkan semua data terurut
Pseudocode p = PanjangArray IndexMin = 0 For i = 0 to (p-1) IndexMin = i For j = (i+1) to (p-1) If Data[IndexMin]>Data[j] then IndexMin = j End If End For If IndexMin < (p) then If Data[i]>Data[IndexMin] then Temp = Data[IndexMin] Data[IndexMin]=Data[i] Data[i]=temp
Contoh Iterasi Diketahui Array Data atau List Data angka sebagai berikut 7,8,4,2 Proses ke 1 indexmin=0 i = 0 Indexmin=0 (diperoleh dari i) J = 1 (diperoleh dari (i+1) Cek Data[indexmin]>Data[j], 7>8 tidak J = 2 Cek Data[indexmin]>Data[j], 7>4 ya Indexmin = 2 (diperoleh dari indexmin=j) J = 3 Cek Data[indexmin]>Data[j], 4>2 ya Indexmin = 3 (diperoleh dari indexmin=j) Cek indexmin<Panjang Ya Cek Data[i]>Data[indexmin], 7>2 ya Temp = 2 (diperoleh dari Data[indexmin]) Data[IndexMin] = 7 (Diperoleh dari Data[i]) Data[i] = 2 (Diperoleh dari temp)
Iterasi 2,7,8,4 Proses ke 2 i = 1 Indexmin=1 (diperoleh dari i) J = 2 (diperoleh dari (i+1) Cek Data[indexmin]>Data[j], 7>8 tidak J = 3 Cek Data[indexmin]>Data[j], 7>4 ya Indexmin = 3 (diperoleh dari indexmin=j) Cek indexmin<Panjang Ya Cek Data[i]>Data[indexmin], 7>4 ya Temp = 4 (diperoleh dari Data[indexmin]) Data[IndexMin] = 7 (Diperoleh dari Data[i]) Data[i] = 4 (Diperoleh dari temp)
Iterasi 2,4,7,8 Proses ke 3 i = 2 Indexmin=2 (diperoleh dari i) J = 3 Cek Data[indexmin]>Data[j], 7>8 tidak Cek indexmin<Panjang Ya Cek Data[i]>Data[indexmin], 7>7 tidak Proses ke 4 i=3 Indexmin=3 J = 4 (Tidak terjadi perulangan terhadap J) Cek Indexmin<Panjang Ya Cek Data[i]>Data[Indexmin], 8>8 tidak
Latihan Urutkan data berikut 5,7,2,9,1,3