Bird
Raised Fist0
DSA Rustprogramming~5 mins

Selection Sort Algorithm in DSA Rust - 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
intermediate
In Selection Sort, how many times do we swap elements in the worst case?
At most, Selection Sort swaps elements exactly (n-1) times, where n is the number of elements, because it swaps once per pass.
Click to reveal answer
beginner
Show the first two steps of Selection Sort on the array [3, 1, 4, 2].
Step 1: Find smallest (1), swap with 3 → [1, 3, 4, 2]
Step 2: Find smallest in [3,4,2] (2), swap with 3 → [1, 2, 4, 3]
Click to reveal answer
intermediate
What is the time complexity of Selection Sort and why?
Selection Sort has O(n²) time complexity because it uses two nested loops: one to select elements and one to find the minimum each time.
Click to reveal answer
beginner
Write a simple Rust function signature for Selection Sort on a mutable slice of integers.
fn selection_sort(arr: &mut [i32]) { /* implementation */ }
Click to reveal answer
What does Selection Sort do at each step?
AUses a pivot to partition the list
BSwaps adjacent elements if they are in wrong order
CDivides the list and merges sorted parts
DFinds the smallest element and swaps it to the front
How many swaps does Selection Sort perform in the worst case for n elements?
An-1
Bn²
Cn
D0
What is the best-case time complexity of Selection Sort?
AO(n²)
BO(log n)
CO(n)
DO(n log n)
Which of these is true about Selection Sort?
AIt is a stable sorting algorithm
BIt uses extra memory proportional to n
CIt is an in-place sorting algorithm
DIt is faster than Quick Sort on large data
What is the main disadvantage of Selection Sort?
AIt is not easy to implement
BIt has poor performance on large lists
CIt requires extra memory
DIt only works on sorted lists
Explain how Selection Sort works step-by-step on an unsorted list.
Think about how you pick the smallest item and place it at the start repeatedly.
You got /4 concepts.
    Describe the time complexity of Selection Sort and why it is not efficient for large data.
    Consider how many times you compare elements as the list grows.
    You got /4 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 sort each half separately
      C. Swap adjacent elements if they are in wrong order
      D. Insert each element into its correct position in a sorted sublist

      Solution

      1. Step 1: Understand selection sort process

        Selection sort finds the smallest element in the unsorted part and swaps it with the first unsorted element.
      2. Step 2: Compare with options

        Repeatedly find the smallest element and move it to the front matches this description exactly, others describe different sorting methods.
      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 smallest next element [OK]
      Common Mistakes:
      • Confusing selection sort with bubble sort
      • Thinking it divides list into halves
      • Mixing it up with insertion sort
      2. Which of the following is the correct Rust syntax to swap two elements a[i] and a[min_index] in a vector a?
      easy
      A. a.swap_elements(i, min_index);
      B. swap(a[i], a[min_index]);
      C. a[i], a[min_index] = a[min_index], a[i];
      D. a.swap(i, min_index);

      Solution

      1. Step 1: Recall Rust vector swap method

        Rust vectors have a method called swap that takes two indices and swaps their elements.
      2. Step 2: Match syntax with options

        a.swap(i, min_index); uses a.swap(i, min_index); which is correct. Others are invalid Rust syntax or methods.
      3. Final Answer:

        a.swap(i, min_index); -> Option D
      4. Quick Check:

        Rust vector swap method = a.swap(i, j) [OK]
      Hint: Use vector.swap(index1, index2) to swap elements [OK]
      Common Mistakes:
      • Trying to swap elements directly with assignment
      • Using non-existent swap_elements method
      • Using Python-style tuple swap syntax
      3. What will be the output vector after running selection sort on vec![3, 1, 4, 2]?
      medium
      A. [1, 3, 2, 4]
      B. [4, 3, 2, 1]
      C. [1, 2, 3, 4]
      D. [2, 1, 3, 4]

      Solution

      1. Step 1: Perform selection sort step-by-step

        Initial vector: [3, 1, 4, 2] - Find smallest (1), swap with first element: [1, 3, 4, 2] - Find smallest in remaining (3,4,2) is 2, swap with second element: [1, 2, 4, 3] - Find smallest in last two (4,3) is 3, swap with third element: [1, 2, 3, 4]
      2. Step 2: Confirm final sorted vector

        The vector is sorted ascending: [1, 2, 3, 4]
      3. Final Answer:

        [1, 2, 3, 4] -> Option C
      4. Quick Check:

        Selection sort output = sorted ascending [OK]
      Hint: Selection sort outputs sorted ascending list [OK]
      Common Mistakes:
      • Confusing selection sort with reverse sorting
      • Stopping after first swap
      • Not swapping correctly
      4. Consider this Rust code snippet for selection sort. What is the bug?
      fn selection_sort(a: &mut Vec<i32>) {
          let n = a.len();
          for i in 0..=n {
              let mut min_index = i;
              for j in i+1..n {
                  if a[j] < a[min_index] {
                      min_index = j;
                  }
              }
              a.swap(i, min_index);
          }
      }
      medium
      A. min_index should be initialized to 0, not i
      B. The outer loop should run until n-1, not n
      C. The swap method does not exist for vectors
      D. The inner loop should start from 0, not i+1

      Solution

      1. Step 1: Analyze loop ranges

        The outer loop runs from 0 to n inclusive, meaning it runs n+1 times. But the last element does not need to be checked because it will already be sorted.
      2. Step 2: Correct loop range for outer loop

        The outer loop should run from 0 to n-1 to avoid unnecessary iteration and potential out-of-bound errors.
      3. Final Answer:

        The outer loop should run until n-1, not n -> Option B
      4. Quick Check:

        Outer loop range = 0..n-1 [OK]
      Hint: Outer loop runs to n-1, not n [OK]
      Common Mistakes:
      • Running outer loop one step too far
      • Starting inner loop incorrectly
      • Misunderstanding swap method existence
      5. You want to sort a vector of integers but only partially: you want the first 3 smallest elements sorted at the front, and the rest can remain unsorted. How can you modify selection sort to do this efficiently?
      hard
      A. Run the outer loop only 3 times instead of full length
      B. Run the inner loop only 3 times for each outer iteration
      C. Sort the entire vector then shuffle last elements randomly
      D. Use bubble sort for first 3 elements and selection sort for rest

      Solution

      1. Step 1: Understand partial sorting requirement

        We only want the first 3 smallest elements sorted at the front, so we only need to find and place the smallest element 3 times.
      2. Step 2: Modify selection sort outer loop

        By running the outer loop 3 times, selection sort will place the 3 smallest elements in order at the front, leaving the rest unsorted.
      3. Final Answer:

        Run the outer loop only 3 times instead of full length -> Option A
      4. Quick Check:

        Partial sort = limit outer loop iterations [OK]
      Hint: Limit outer loop to number of elements to sort [OK]
      Common Mistakes:
      • Modifying inner loop instead of outer loop
      • Sorting entire vector unnecessarily
      • Mixing sorting algorithms incorrectly
      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