Selection sort merupakan sebuah teknik pengurutan dengan cara mencari nilai tertinggi / terendah di dalam array kemudian menempatkan nilai tersebut di tempat semestinya. Algorithma ini dapat mengurutkan data dari besar ke kecil (Ascending) dan kecil ke besar (Descending). Algoritma ini tidak cocok untuk set data dengan jumlah besar karena kompleksitas dari algorithma ini adalah Ο(x2) di mana n adalah jumlah item.

Berikut gambaran dari implementasi SelectionSort:

1st Cycle:
(70, 60, 30, 50, 40,20) ->min 60
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 30
(70, 60, 30, 50, 40, 20)->min 20
(20, 60, 30, 50, 40, 70) -> swap (70,20)

2nd Cycle:
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 60, 30, 50, 40, 70) ->min 30
(20, 30, 60, 50, 40, 70) ->swap (60,30)

3rd Cycle:
(20, 30, 60, 50, 40, 70) -> min 50
(20, 30, 60, 50, 40, 70) -> min 40
(20, 30, 60, 50, 40, 70) -> min 40
(20, 30, 40, 50, 60, 70) -> swap(60,40)

4th Cycle:
(20, 30, 40, 50, 60, 70) -> min 50
(20, 30, 40, 50, 60, 70) -> min 50
(20, 30, 40, 50, 60, 70)

5th Cycle:
(20, 30, 40, 50, 60, 70) -> min 60
(20, 30, 40, 50, 60, 70)

Berikut implementasi dari Selection Sort menggunakan Bahasa C:

#include<stdio.h>

 

int main(){

int arr[]={70,60,30,50,40,20};

int n = sizeof(arr)/sizeof(int);

 

for(int i=0; i<n – 1; i++){

int idx_low=i;

for(int j=i+1; j<n; j++){

if(arr[idx_low] > arr[j]){

idx_low = j;

}

}

if (idx_low > i){

int temp = arr[i];

arr[i]=arr[idx_low];

arr[idx_low]=temp;

}

}

 

for(int i=0;i<n;i++){

printf(“%d “,arr[i]);

}

 

return 0;

}

Reference:

Paul Deitel & Harvey Deitel. (2016). C how to program : with an introduction to C++. 08. Pearson  Education. Hoboken. ISBN: 9780133976892.