Skip to main content

Selection Sort


The idea is to select the smallest element of remaining array and then swap it to the front.



  • scan array, find the minimum element's index min_idx
  • swap the element to the index i, then incrememnt i
public class SelectionSort{
void selectionSort(int arr[]) {
int n = arr.length;

// One by one move boundary of unsorted subarray
for (int i = 0; i < n-1; i++) {
// Find the minimum element in the input array
int min_idx = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;

// Swap the found minimum element with the ith element
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;

Time and Space Analysis

  • Time O(n^2)
  • Space O(1)