Learn

As mentioned, the selection sort algorithm swaps the element in the first position of the unsorted sub-list with the element with the lowest value in the remainder of the unsorted sub-list.

How does this algorithm swap these elements in practice? Let’s say we have the two values stored at the following indices `index_1` and `index_2`. How would we swap these two elements within the list?

It is tempting to write code like:

``````array[index_1] = array[index_2];
array[index_2] = array[index_1];``````

However, if we do this, we lose the original value at `index1`. The element gets replaced by the value at `index2`. Both indices end up with the value at `index2`.

Programming languages have different ways of avoiding this issue. In some languages, we create a temporary variable which holds one element during the swap:

``````int temp = array[index_1];
array[index_1] = array[index_2];
array[index_2] = temp;``````

This animation illustrates how the swapping in the selection sort algorithm should work: Using the temporary variable strategy seen in the GIF above avoids the loss of any of the values whose position we need to exchange.

We’ll use this strategy to build out `swap()`.

### Instructions

1.

Look at the `swap()` method. Notice that `swap()` takes 3 arguments: `arr`, the input array, and `indexOne`, and `indexTwo`, the two indices whose values we want to swap.

In the method, create an `int` variable called `temp` and store the value of the element at the `indexTwo` position in the input array so it can be referenced later.

2.

Change the value at `indexTwo` of the input array to the value of the element at `indexOne`.

3.

Set the element at `indexOne` of the array to the original value of the element at `indexTwo` by referring to the `temp` variable we created earlier (the element at indexTwo is no longer the same after the previous step).

4.

In the `main()` method, let’s test out the swap method. Add the following code to the `main()` method:

``````int[] swapData = {-10, 15, 18, 10, 25};
// provide arguments for `swap()`
SelectionSort.swap();``````

Check out the array called `swapData`. Call `swap()` so that the values `15` and `10` swap places with each other. We will print the results in our next checkpoint!

5.

Add a print statement in the main method right after the `swap()` call. To print an array use `System.out.println(Arrays.toString(arrayName))`. Make sure to use the correct variable name of your array.

6.

Now that we know our `swap()` method works, let’s add it to our `selectionSort()` method.

Update the code executed in our `main()` method to:

``````int[] data = { 2, 7, -7, 20, -5 };
SelectionSort.selectionSort(data);
System.out.println("Sorted Array in Ascending Order: ");
System.out.println(Arrays.toString(data));``````

Next, in our `selectionSort()` method, after our inner `for` loop but before we close our outer `for` loop, call the `swap()` method passing in `arr`, `i` and `currentMinimumIndex`.