Bird
Raised Fist0
DSA Pythonprogramming~5 mins

Selection Sort Algorithm in DSA Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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
What is the space complexity of Selection Sort?
AO(1)
BO(log n)
CO(n)
DO(n²)
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²)
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
Which sorting algorithm is Selection Sort most similar to in approach?
ABubble Sort
BNone of these
CHeap Sort
DInsertion 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

      1. 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.
      2. Step 2: Compare with other sorting methods

        Other options describe different algorithms: merge sort, bubble sort, and quicksort, not selection sort.
      3. Final Answer:

        Repeatedly find the smallest element and move it to the front -> Option A
      4. 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

      1. Step 1: Identify Pythonic swap syntax

        Python allows swapping two variables in one line: a[i], a[j] = a[j], a[i].
      2. 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.
      3. Final Answer:

        a[i], a[j] = a[j], a[i] -> Option B
      4. 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

      1. 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].
      2. 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].
      3. Final Answer:

        [1, 3, 4] -> Option D
      4. 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

      1. 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.
      2. Step 2: Correct the comparison operator

        Changing '>' to '<' will correctly find the smallest element to swap.
      3. Final Answer:

        Change '>' to '<' in the if condition to find the smallest element -> Option C
      4. 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

      1. 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
      2. Step 2: Count total swaps

        Total swaps performed = 3.
      3. Final Answer:

        3 -> Option A
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard