Question:
Consider the following Java implementation of the selection sort algorithm:
public class SelectionSort {
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
int minIndex = i;
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
public static void main(String[] args) {
int[] numbers = {5, 2, 8, 1, 9, 3};
selectionSort(numbers);
for (int num : numbers) {
System.out.print(num + " ");
}
}
}
Identify the outputs of the selection sort implementation given above.
a) 5 2 8 1 9 3 b) 1 2 3 5 8 9 c) 9 8 5 3 2 1 d) 3 1 2 5 8 9
Explain your answer using step-by-step explanations of the selection sort algorithm.
Answer:
The selection sort algorithm sorts an array by repeatedly finding the minimum element from the unsorted part of the array and swapping it with the element at the beginning of the unsorted part. The process continues until the entire array is sorted.
Let's analyze the given code:
selectionSort
method and a main
method.selectionSort
method takes an integer array as input and sorts it in ascending order using the selection sort algorithm.main
method initializes an integer array numbers
with values {5, 2, 8, 1, 9, 3}.selectionSort
method, passing the numbers
array as an argument.Now, let's trace the execution of the selection sort algorithm step-by-step:
numbers = [5, 2, 8, 1, 9, 3]
.i = 0
to i = n-2
(where n
is the size of the array - 6 in this case).i = 0
):
minIndex
is initially set to 0
.j = i+1
to j = n-1
, comparing each element with the element at minIndex
.j = 1
(value 2) is found to be smaller than the element at minIndex = 0
(value 5). So, minIndex
is updated to 1
.j = 2
(value 8) is found to be greater than the current minimum element 2.j = 3
(value 1) is found to be smaller than the current minimum element 2. So, minIndex
is updated to 3
.j = 4
(value 9) is found to be greater than the current minimum element 1.j = 5
(value 3) is found to be smaller than the current minimum element 1. So, minIndex
is updated to 5
.minIndex = 5
(value 3) with the element at i = 0
(value 5).[3, 2, 8, 1, 9, 5]
.i = 1
):
minIndex
is initially set to 1
.j = i+1
to j = n-1
, comparing each element with the element at minIndex
.j = 2
(value 8) is found to be greater than the current minimum element 2.j = 3
(value 1) is found to be smaller than the current minimum element 2. So, minIndex
is updated to 3
.j = 4
(value 9) is found to be greater than the current minimum element 1.minIndex = 3
(value 1) with the element at i = 1
(value 2).[3, 1, 8, 2, 9, 5]
.i = 4
):
[1, 2, 3, 5, 8, 9]
.Therefore, the output of the given code will be Option B: 1 2 3 5 8 9.