What is selection sort algorithm?
- Selection sort is sorting technique used to sort the elements in list data structure like array.
- The selection sort is quite simple algorithm.
- The time complexity of selection sort algorithm is O(n^2).
- The logical flow of selection sort is as follows
- Given an unsorted integer array.
- Array will be virtually divided into two halves.
- Sorted array and unsorted array.
- Initially sorted array will be empty and unsorted array will be full.
- We will select or find minimum element from unsorted array and move it to sorted array.
- After every iteration data starts moving from unsorted array to sorted array.
- Slowly all the elements will be moved to sorted array.
- We will get sorted array using selection sort algorithm.
Algorithm: sort an integer array using selection sort in java
- Given an unsorted integer array of length n.
- We will use two for loop to sort an input array.
- Start iterating through the array
- Outer for loop will iterate from 0 to n – 1 and let the index will be outerindex.
- Select current index are as probable minimum element in unsorted array.
- Start inner for loop from outerindex + 1 to n.
- Find minimum element in an array i.e. right side of outerindex + 1.
- Add minimum element to sorted list.
- Once, we are out of loop, we will get the sorted array.
Example- sort integer array using selection sort algorithm in java.
- Let us take an example to understand, the working of selection sort algorithm (step by step).
- Given a input array, which we would like to sort using selection sort

- We divide the array in two parts (Sorted array and unsorted array) [Refer Fig 2]
- Initially sorted array will be empty and unsorted array will be full.
- We will select the minimum element from unsorted array.
- Then, we will put minimum element to sorted array.
- We assumes 10 as probable smallest element in unsorted array
- We will iterated unsorted the rest of array to find the smallest element
- We will find 7 as the smallest element
- We will swap smallest element with probable smallest element (10) i.e 7 with 10
- So, we will get first element for our sorted array i.e. 7
- We will get array as {7, 10, 25, 20, 12, 9} after first iteration

- After first iteration, we will have array {7, 10, 25, 20, 12, 9}, where 7 got its final position.
- We will select next element i.e. 10 as probable smallest element [Refer Fig: 3]
- Now, we will the find smallest element in rest of the array (from 2 to 5).
- Smallest element will be 9.
- Swap the probable smallest element i.e 10 with actual element 9.
- We will get array as {7, 9, 25, 20, 12, 10} after second iteration

- After second iteration, we will have array {7, 9, 25, 20, 12, 10} where 7 and 9 got its final position.
- We will select next element i.e. 25 as probable smallest element [Refer Fig: 4]
- Now, we will find the smallest element in rest of the array (from 3 to 5).
- Smallest element will be 10.
- Swap the probable smallest element i.e 25 with actual element 10.
- We will get array as {7, 9, 10, 20, 12, 25} after third iteration

- After third iteration, we will have array {7, 9, 10, 20, 12, 25} where 7,9,10 got its final position.
- Similarly in fourth iteration, we will get output as {7, 9, 10, 12, 20, 25}

- After fourth iteration, we will have array {7, 9, 10, 12, 20, 25} where 7,9,10,12 got its final position.
- Similarly in fifth iteration, we will get output as {7, 9, 10, 12, 20, 25}
- 7,9,10,12 and 20 got its final position
- Element 25 implicitly got its final position.
- As we have sorted n-1 elements, the nth element will automatically get its final position
- So, we got the sorted array.

Performance analysis of selection sort algorithm
S. No. | Cases | Complexity |
---|---|---|
1 | Best case | O(n^2) |
2 | Average case | O(n^2) |
3 | Worst case | O(n^2) |
Program – sort an integer array using selection sort algorithm in java
package org.learn.arrays; import java.util.Arrays; public class SelectionSort { public static void main(String[] args) { int [] example1 = { 10 , 7 , 25 , 20 , 12 , 9 }; System.out.println( "Unsorted array is : " +Arrays.toString(example1)); selectionSort(example1); int [] example2 = { 5 , 4 , 3 , 2 , 1 , 0 }; System.out.println( "\nUnsorted array is : " +Arrays.toString(example2)); selectionSort(example2); } private static void selectionSort( int [] arr) { int length = arr.length; for ( int outterIndex = 0 ; outterIndex < length - 1 ; outterIndex++) { //mark current index as minimum value index int iCurrentMin = outterIndex; for ( int innerIndex = iCurrentMin + 1 ; innerIndex < length; innerIndex++) { if (arr[iCurrentMin] > arr[innerIndex]) { //save the actual min value index iCurrentMin = innerIndex; } } //If current element is not smallest, let us swap it if (iCurrentMin != outterIndex) { swap(arr,iCurrentMin, outterIndex); } } System.out.println( "Sorted Array is : " + Arrays.toString(arr)); } private static void swap( int [] arr, int index_1, int index_2) { int temp = arr[index_1]; arr[index_1] = arr[index_2]; arr[index_2] = temp; } } |
Output – sort an array using selection sort algorithm in java
Unsorted array is : [ 10 , 7 , 25 , 20 , 12 , 9 ] Sorted Array is : [ 7 , 9 , 10 , 12 , 20 , 25 ] Unsorted array is : [ 5 , 4 , 3 , 2 , 1 , 0 ] Sorted Array is : [ 0 , 1 , 2 , 3 , 4 , 5 ] |