Learn

Let’s remind ourselves of the pseudo-code for our selection sort algorithm:

``````selectionSort(array)
repeat (size - 1) times
start at the beginning index of the unsorted sub-list as the current minimum
walk through all elements of the unsorted sub-list to find the index of the smallest element and set as current minimum
swap that element with the first element in the unsorted sub-list. That element is now part of the sorted sublist
end selectionSort``````

In this implementation of selection sort, we will write a `for` loop that runs the length of the input array minus `1`.

Step 1: Inside of the `for` loop we will set the current minimum index to the first position of the unsorted sub-list.
Step 2: We will look through the remainder of the unsorted sub-list to find the actual minimum index.
Step 3: We will swap the actual minimum index value with the first unsorted position and now consider that position as part of the sorted sub-list.
Step 4: We move on to the next unsorted item in the array and repeat steps 2 and 3.
Step 5: We will continue to do this until we arrive at the last element in the list.

For this exercise, we will focus on the outer `for` loop iterating through our input array and setting the `currentMinimumIndex`.

``````selectionSort(array)
...
repeat (size - 1) times
start at the beginning index of the unsorted sub-list as the current minimum
...
end selectionSort``````

### Instructions

1.

Inside of our `selectionSort()` function, create a variable `size` of type `int` and set to the length of our input array.

2.

To start sorting, we need to write a `for` loop that begins with a counter, `i`, initialized to `0`.

If we have a list of size 5, we know that we need to find the smallest value 4 times (the 5th smallest value will already be sorted by default). Therefore, we want our outer for loop to run 4 times. Since our loop counter is starting at 0, we want it to end once it gets to 4. The condition is therefore `i < size - 1`.

3.

Inside of our `for` loop, create a variable `currentMinimumIndex` of type `int` and assign it the value of `i`. Ultimately, we want to find the location of the smallest value in our unsorted sub-list and assign it to `currentMinimumIndex`.