Selection sort was introduced in Sorting Arrays. Recall that it finds the smallest element in the list and swaps it with the first element. It then finds the smallest element remaining and swaps it with the first element in the remaining list, and so on until the remaining list contains only a single element. The problem can be divided into two subproblems:
- Find the smallest element in the list and swap it with the first element.
- Ignore the first element and sort the remaining smaller list recursively.
The base case is that the list contains only one element. The code below gives the recursive sort method.
Two overloaded sort methods are defined. The first method, sort(double[] list), sorts an array in list[0..list.length – 1] and the second method, sort(double[] list, int low, int high), sorts an array in list[low..high]. The second method can be invoked recursively to sort an ever-shrinking subarray.