Selection Sort
Idea
The idea is to select the smallest element of remaining array and then swap it to the front.
Visualization
Implementation
- scan array, find the minimum element's index min_idx
- swap the element to the index i, then incrememnt i
public class SelectionSort{
void selectionSort(int arr[]) {
int n = arr.length;
// One by one move boundary of unsorted subarray
for (int i = 0; i < n-1; i++) {
// Find the minimum element in the input array
int min_idx = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element with the ith element
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
}
Time and Space Analysis
- Time O(n^2)
- Space O(1)