Algorithm Code
Time: O(n²) | Space: O(1)
1void selectionSort(int arr[]) {
2 int n = arr.length;
3 for (int i = 0; i < n - 1; i++) {
4 int minIndex = i;
5 for (int j = i + 1; j < n; j++) {
6 if (arr[j] < arr[minIndex]) {
7 minIndex = j;
8 }
9 }
10 // Swap the found minimum element with first element
11 int temp = arr[minIndex];
12 arr[minIndex] = arr[i];
13 arr[i] = temp;
14 }
15}Algorithm Steps
Step 1 of 53
Initial Array
The unsorted array.
Starting Pass
Starting pass 1. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 0 (64) is minimum.
Comparing
Comparing 34 with current minimum 64.
New Minimum Found
Found new minimum: 34 at index 1.
Comparing
Comparing 25 with current minimum 34.
New Minimum Found
Found new minimum: 25 at index 2.
Comparing
Comparing 12 with current minimum 25.
New Minimum Found
Found new minimum: 12 at index 3.
Comparing
Comparing 22 with current minimum 12.
Comparing
Comparing 11 with current minimum 12.
New Minimum Found
Found new minimum: 11 at index 5.
Comparing
Comparing 90 with current minimum 11.
Swapping
Swapping 64 with minimum 11.
Swapped
Swapped! 11 is now in position 0.
Starting Pass
Starting pass 2. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 1 (34) is minimum.
Comparing
Comparing 25 with current minimum 34.
New Minimum Found
Found new minimum: 25 at index 2.
Comparing
Comparing 12 with current minimum 25.
New Minimum Found
Found new minimum: 12 at index 3.
Comparing
Comparing 22 with current minimum 12.
Comparing
Comparing 64 with current minimum 12.
Comparing
Comparing 90 with current minimum 12.
Swapping
Swapping 34 with minimum 12.
Swapped
Swapped! 12 is now in position 1.
Starting Pass
Starting pass 3. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 2 (25) is minimum.
Comparing
Comparing 34 with current minimum 25.
Comparing
Comparing 22 with current minimum 25.
New Minimum Found
Found new minimum: 22 at index 4.
Comparing
Comparing 64 with current minimum 22.
Comparing
Comparing 90 with current minimum 22.
Swapping
Swapping 25 with minimum 22.
Swapped
Swapped! 22 is now in position 2.
Starting Pass
Starting pass 4. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 3 (34) is minimum.
Comparing
Comparing 25 with current minimum 34.
New Minimum Found
Found new minimum: 25 at index 4.
Comparing
Comparing 64 with current minimum 25.
Comparing
Comparing 90 with current minimum 25.
Swapping
Swapping 34 with minimum 25.
Swapped
Swapped! 25 is now in position 3.
Starting Pass
Starting pass 5. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 4 (34) is minimum.
Comparing
Comparing 64 with current minimum 34.
Comparing
Comparing 90 with current minimum 34.
No Swap Needed
Minimum is already in correct position.
Starting Pass
Starting pass 6. Looking for minimum in unsorted portion.
Initialize Minimum
Assume element at index 5 (64) is minimum.
Comparing
Comparing 90 with current minimum 64.
No Swap Needed
Minimum is already in correct position.
Sorted!
The array is fully sorted.