Selection Sort Implementation in Java

Implement Selection Sort Algorithm in Java

Before implementing Java program for selection sort let's first see how selection sort functions to sort array elements in either ascending or descending order. Selection sort improves a little on the bubble sort by reducing the number of swaps necessary from O(N2) to O(N). However, the number of comparisons remains O(N2). The selection sort can offer a significant improvement for large records that must be physically moved around in memory, causing the swap time to be much more important than the comparison time. (Typically, this isn't the case in Java, where references are moved around, and not entire objects.)

Java Program Code for Selection Sort

Developing Java code for selection sort is quite easy. The idea upon selection sort works is simple; a selection sort selects the element with the lowest value and exchanges it with the first element. Then, from the remaining N-1 elements, the element with the smallest key is found and exchanged with the second element, and so forth. The exchanges continue till the last two elements. Following program develops a class SelectionSort containing a static generic method selectionSort. Note that Java provides the java.util.Comparable interface that contains a single method, compareTo. Any class that correctly implements this interface guarantees a total ordering of its instances.

class SelectionSort 
  public static <T extends Comparable<T>> void selectionSort (T[] list, int size) 
    int outCounter, inCounter, minIndex; 
    T temp;
    // swapOccurred helps to stop iterating if the array gets sorted before 
    // outCounter reaches to size
    for (outCounter = 0; outCounter < size - 1; outCounter++)
      minIndex = outCounter;
      for (inCounter = outCounter + 1; inCounter < size; inCounter++)
        if (list[minIndex].compareTo(list[inCounter]) > 0)
          minIndex = inCounter;
      //swap items
      if (minIndex != outCounter)
        temp = list[minIndex];
        list[minIndex] = list[outCounter];
        list[outCounter] = temp;
public class SelectionSortDemo
  public static void main (String[] args)
    Integer arr[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    SelectionSort.selectionSort(arr, arr.length);
    System.out.println("Sorted Array: ");
    for(Integer i : arr)
Sorted Array:

In above implementation we test a condition minIndex != outCounter before swapping elements just to save unessential swaps. If minIndex remains equal to outCounter, then the element pointed by minIndex is the smallest and no swap is required.

Pros and Cons of Selection Sort

Simplicity is the main benefit of using selection sort. It is an algorithm that is easy to understand and implement. On the downside, selection sort is very inefficient at sorting lists containing large quantities of data. It has an algorithmic complexity of O(N2).

Analysis of Selection Sort

For large values of N, the comparison times dominate, so we would have to say that the selection sort runs in O(N2) time, just as the bubble sort does. However, selection sort is slightly faster because there is less number of swaps in compare to bubble sort. For smaller values of N (input size) the selection sort may in fact be considerably faster, especially if the swap times are much larger than the comparison times.

Last Word

In this tutorial we discussed selection sort. We implemented selection sort algorithm in Java. Selection sort is among the basic and the slowest sorting techniques. Hope you have enjoyed reading this tutorial. Please do write us if you have any suggestion/comment or come across any error on this page. Thanks for reading!


Get Free Tutorials by Email

About the Author

is the main author for He is a software professional (post graduated from BITS-Pilani) and loves writing technical articles on programming and data structures.

Today's Tech News

Gmail to end ad-targeting email scansPosted on Monday June 26, 2017

Privacy groups cautiously welcome Google's pledge to end scans of Gmail messages to personalise ads.

Player protests force change on GTA V mod kitPosted on Monday June 26, 2017

Complaints, negative reviews, and petitions make GTA's publisher end legal action over a popular game add-on

Russia targets Telegram app after St Petersburg bombingPosted on Monday June 26, 2017

A suicide bomber who killed 15 people in St Petersburg used the messaging app, officials say.

Courtesy BBC News