What is the main idea behind the Selection Sort algorithm?
Selection Sort repeatedly finds the smallest element from the unsorted part and moves it to the beginning, sorting the list step by step.
Click to reveal answer
beginner
How does Selection Sort find the next element to place in the sorted part?
It scans the unsorted part of the list to find the minimum element and swaps it with the first unsorted element.
Click to reveal answer
intermediate
What is the time complexity of Selection Sort in the average and worst cases?
The time complexity is O(n²) because it uses two nested loops: one to select the position and one to find the minimum element.
Click to reveal answer
beginner
Does Selection Sort require extra memory for sorting?
No, Selection Sort sorts the list in place, so it uses only a small constant amount of extra memory (O(1)).
Click to reveal answer
intermediate
What happens if the list is already sorted when using Selection Sort?
Selection Sort still scans the entire unsorted part to find the minimum element, so it does not improve and still takes O(n²) time.
Click to reveal answer
What does Selection Sort do at each step?
AFinds the smallest element and swaps it to the front
BSwaps adjacent elements if they are in wrong order
CDivides the list into halves and sorts each
DBuilds a heap to sort elements
✗ Incorrect
Selection Sort finds the smallest element in the unsorted part and swaps it to the front.
What is the space complexity of Selection Sort?
AO(1)
BO(log n)
CO(n)
DO(n²)
✗ Incorrect
Selection Sort sorts the list in place and uses only constant extra space.
Which of these is true about Selection Sort's time complexity?
ABest case is O(n log n)
BAverage case is O(n)
CIt is always O(log n)
DWorst case is O(n²)
✗ Incorrect
Selection Sort always takes O(n²) time because it scans the unsorted part fully each time.
How many swaps does Selection Sort perform in the worst case?
ADepends on the input
BAt most n² swaps
CAt most n swaps
DNo swaps
✗ Incorrect
Selection Sort performs at most one swap per pass, so at most n swaps.
Which sorting algorithm is Selection Sort most similar to in approach?
ABubble Sort
BNone of these
CHeap Sort
DInsertion Sort
✗ Incorrect
Selection Sort is unique in selecting the minimum element each time; it is different from Bubble and Insertion Sort.
Explain how Selection Sort works step by step on a small list.
Think about how you pick the smallest item and place it at the start repeatedly.
You got /4 concepts.
Describe the time and space complexity of Selection Sort and why it has those complexities.
Consider how many comparisons and swaps happen as the list grows.
You got /3 concepts.
Practice
(1/5)
1. What is the main idea behind the Selection Sort algorithm?
easy
A. Repeatedly find the smallest element and move it to the front
B. Divide the list into halves and merge sorted halves
C. Swap adjacent elements if they are in wrong order repeatedly
D. Use a pivot to partition the list into smaller parts
Solution
Step 1: Understand Selection Sort process
Selection Sort works by finding the smallest element in the unsorted part and swapping it with the first unsorted element.
Step 2: Compare with other sorting methods
Other options describe different algorithms: merge sort, bubble sort, and quicksort, not selection sort.
Final Answer:
Repeatedly find the smallest element and move it to the front -> Option A
Quick Check:
Selection Sort = Find smallest and swap [OK]
Hint: Selection sort always picks the smallest next element [OK]
Common Mistakes:
Confusing selection sort with bubble sort
Thinking it divides the list like merge sort
Mixing it up with quicksort's pivot method
2. Which of the following is the correct syntax to swap two elements a[i] and a[j] in Python during selection sort?
easy
A. temp = a[i]; a[i] = a[j]; a[j] = a[i]
B. a[i], a[j] = a[j], a[i]
C. swap(a[i], a[j])
D. a[i] = a[j]; a[j] = a[i]
Solution
Step 1: Identify Pythonic swap syntax
Python allows swapping two variables in one line: a[i], a[j] = a[j], a[i].
Step 2: Check other options for correctness
temp = a[i]; a[i] = a[j]; a[j] = a[i] causes data loss by overwriting without properly using temp; swap(a[i], a[j]) is invalid syntax; a[i] = a[j]; a[j] = a[i] causes both to have same value.
Final Answer:
a[i], a[j] = a[j], a[i] -> Option B
Quick Check:
Python swap = a[i], a[j] = a[j], a[i] [OK]
Hint: Use comma swap for clean Python element exchange [OK]
Common Mistakes:
Using a function swap() which doesn't exist
Assigning one element twice causing data loss
Not using tuple unpacking for swap
3. What will be the output of the following code snippet?
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
arr = [3, 1, 4]
selection_sort(arr)
print(arr)
medium
A. [4, 3, 1]
B. [3, 1, 4]
C. [1, 4, 3]
D. [1, 3, 4]
Solution
Step 1: Trace first iteration of outer loop
i=0, min_idx=0; inner loop finds smallest element from index 1 and 2. arr[1]=1 < arr[0]=3, so min_idx=1. Swap arr[0] and arr[1]: arr becomes [1, 3, 4].
Step 2: Trace second iteration
i=1, min_idx=1; inner loop checks arr[2]=4 which is not less than arr[1]=3, so no swap. Array stays [1, 3, 4].
Final Answer:
[1, 3, 4] -> Option D
Quick Check:
Sorted array = [1, 3, 4] [OK]
Hint: Selection sort places smallest element at front each pass [OK]
Common Mistakes:
Not swapping when min_idx changes
Confusing indices in inner loop
Assuming array is unchanged
4. Identify the error in the following selection sort code and choose the correct fix:
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] > arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
medium
A. Initialize min_idx to 0 instead of i
B. Swap should be done outside the outer loop
C. Change '>' to '<' in the if condition to find the smallest element
D. Use '==' instead of '>' in the if condition
Solution
Step 1: Analyze the if condition logic
The code uses 'if arr[j] > arr[min_idx]' which finds the largest element, but selection sort needs the smallest.
Step 2: Correct the comparison operator
Changing '>' to '<' will correctly find the smallest element to swap.
Final Answer:
Change '>' to '<' in the if condition to find the smallest element -> Option C
Quick Check:
Selection sort finds minimum, so use '<' [OK]
Hint: Selection sort finds minimum, so use '<' in comparison [OK]
Common Mistakes:
Using '>' causes sorting in descending order
Swapping outside loop breaks logic
Wrong initialization of min_idx
5. Given a list arr = [5, 3, 8, 3, 9], how many swaps will the selection sort algorithm perform to sort this list in ascending order?
hard
A. 3
B. 4
C. 2
D. 5
Solution
Step 1: Trace selection sort swaps step-by-step
Initial array: [5, 3, 8, 3, 9]
- i=0: smallest is 3 at index 1, swap arr[0] and arr[1] -> [3, 5, 8, 3, 9] (1 swap)
- i=1: smallest is 3 at index 3, swap arr[1] and arr[3] -> [3, 3, 8, 5, 9] (2 swaps)
- i=2: smallest is 5 at index 3, swap arr[2] and arr[3] -> [3, 3, 5, 8, 9] (3 swaps)
- i=3: smallest is 8 at index 3, no swap needed
- i=4: last element, no swap needed
Step 2: Count total swaps
Total swaps performed = 3.
Final Answer:
3 -> Option A
Quick Check:
Swaps counted = 3 [OK]
Hint: Count swaps only when min_idx changes and swap occurs [OK]
Common Mistakes:
Counting swaps even when min_idx equals i
Assuming one swap per iteration always
Ignoring repeated elements affecting swaps
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.