Bird
Raised Fist0
DSA Rustprogramming~10 mins

Selection Sort Algorithm in DSA Rust - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start the outer loop for selection sort.

DSA Rust
for i in 0..[1] {
    // find the minimum element in unsorted array
}
Drag options to blanks, or click blank then click option'
Aarr.len() - 1
Barr.len() / 2
Carr.len() + 1
Darr.len()
Attempts:
3 left
💡 Hint
Common Mistakes
Using arr.len() causes index out of bounds error.
Using arr.len() + 1 is invalid and causes runtime error.
2fill in blank
medium

Complete the code to start the inner loop to find the minimum element.

DSA Rust
for j in [1]..arr.len() {
    if arr[j] < arr[min_index] {
        min_index = j;
    }
}
Drag options to blanks, or click blank then click option'
A1
B0
Ci + 1
Di
Attempts:
3 left
💡 Hint
Common Mistakes
Starting from 0 causes unnecessary comparisons.
Starting from i includes the current element which is already considered.
3fill in blank
hard

Fix the error in swapping the elements after finding the minimum.

DSA Rust
let temp = arr[i];
arr[i] = arr[[1]];
arr[min_index] = temp;
Drag options to blanks, or click blank then click option'
Amin_index
Bi
Cj
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping with i does nothing.
Swapping with j is invalid because j is out of scope here.
4fill in blank
hard

Fill both blanks to complete the selection sort function header and initialize min_index.

DSA Rust
fn selection_sort(arr: &mut Vec<i32>) {
    for i in 0..[1] {
        let mut min_index = [2];
        // rest of the code
    }
}
Drag options to blanks, or click blank then click option'
Aarr.len() - 1
B0
Ci
Darr.len()
Attempts:
3 left
💡 Hint
Common Mistakes
Setting min_index to 0 resets it incorrectly each time.
Looping to arr.len() causes out of bounds error.
5fill in blank
hard

Fill all three blanks to complete the selection sort inner loop and swap logic.

DSA Rust
for j in [1]..arr.len() {
    if arr[j] [2] arr[min_index] {
        min_index = j;
    }
}
if min_index != i {
    let temp = arr[i];
    arr[i] = arr[[3]];
    arr[min_index] = temp;
}
Drag options to blanks, or click blank then click option'
Ai + 1
B<
Cmin_index
D>
Attempts:
3 left
💡 Hint
Common Mistakes
Using > instead of < reverses sorting order.
Swapping with wrong index causes incorrect sorting.

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