Bird
Raised Fist0
DSA Rustprogramming~20 mins

Binary Search vs Linear Search Real Cost Difference in DSA Rust - Compare & Choose

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Search Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Linear Search on a Sorted Array
What is the output of the Rust code performing a linear search for the value 7 in the given sorted array?
DSA Rust
fn linear_search(arr: &[i32], target: i32) -> Option<usize> {
    for (index, &value) in arr.iter().enumerate() {
        if value == target {
            return Some(index);
        }
    }
    None
}

fn main() {
    let arr = [1, 3, 5, 7, 9, 11];
    match linear_search(&arr, 7) {
        Some(index) => println!("Found at index {}", index),
        None => println!("Not found"),
    }
}
AFound at index 2
BNot found
CFound at index 3
DFound at index 4
Attempts:
2 left
💡 Hint
Remember that array indexing starts at 0 and linear search checks elements one by one.
❓ Predict Output
intermediate
2:00remaining
Output of Binary Search on a Sorted Array
What is the output of the Rust code performing a binary search for the value 7 in the given sorted array?
DSA Rust
fn binary_search(arr: &[i32], target: i32) -> Option<usize> {
    let mut low = 0;
    let mut high = arr.len() - 1;
    while low <= high {
        let mid = (low + high) / 2;
        if arr[mid] == target {
            return Some(mid);
        } else if arr[mid] < target {
            low = mid + 1;
        } else {
            if mid == 0 { break; }
            high = mid - 1;
        }
    }
    None
}

fn main() {
    let arr = [1, 3, 5, 7, 9, 11];
    match binary_search(&arr, 7) {
        Some(index) => println!("Found at index {}", index),
        None => println!("Not found"),
    }
}
AFound at index 2
BFound at index 3
CNot found
DFound at index 4
Attempts:
2 left
💡 Hint
Binary search divides the array and checks the middle element each time.
🧠 Conceptual
advanced
1:30remaining
Time Complexity Difference Between Linear and Binary Search
Which statement correctly describes the time complexity difference between linear search and binary search on a sorted array of size n?
ABoth linear and binary search take O(log n) time
BLinear search takes O(log n) time, binary search takes O(n) time
CBoth linear and binary search take O(n) time
DLinear search takes O(n) time, binary search takes O(log n) time
Attempts:
2 left
💡 Hint
Think about how many elements each search checks in the worst case.
❓ Predict Output
advanced
2:00remaining
Output of Binary Search on Unsorted Array
What is the output of the Rust binary search code when searching for 7 in an unsorted array?
DSA Rust
fn binary_search(arr: &[i32], target: i32) -> Option<usize> {
    let mut low = 0;
    let mut high = arr.len() - 1;
    while low <= high {
        let mid = (low + high) / 2;
        if arr[mid] == target {
            return Some(mid);
        } else if arr[mid] < target {
            low = mid + 1;
        } else {
            if mid == 0 { break; }
            high = mid - 1;
        }
    }
    None
}

fn main() {
    let arr = [9, 1, 11, 3, 7, 5];
    match binary_search(&arr, 7) {
        Some(index) => println!("Found at index {}", index),
        None => println!("Not found"),
    }
}
ANot found
BRuntime error due to invalid indexing
CFound at index 4
DFound at index 3
Attempts:
2 left
💡 Hint
Binary search requires the array to be sorted to work correctly.
🧠 Conceptual
expert
2:30remaining
Real Cost Difference in Practice Between Linear and Binary Search
Which statement best explains the real cost difference between linear search and binary search when searching for an element in a large sorted array stored in memory?
ALinear search can be faster for small arrays or when data is in cache due to sequential memory access
BLinear search is faster because it uses simple addition and comparison operations only
CBinary search is slower because it requires sorting the array before searching
DBinary search is always faster because it uses fewer comparisons regardless of memory access cost
Attempts:
2 left
💡 Hint
Consider how memory access patterns affect speed, not just the number of comparisons.

Practice

(1/5)
1. Which search method is generally faster on a sorted list of 1,000,000 elements?
easy
A. Depends on the element's position only
B. Linear Search
C. Both are equally fast
D. Binary Search

Solution

  1. Step 1: Understand search methods on sorted lists

    Binary Search divides the list repeatedly, reducing search space quickly. Linear Search checks elements one by one.
  2. Step 2: Compare time complexity for large lists

    Binary Search runs in O(log n) time, which is much faster than Linear Search's O(n) for large n like 1,000,000.
  3. Final Answer:

    Binary Search -> Option D
  4. Quick Check:

    Binary Search faster on sorted large lists [OK]
Hint: Binary Search halves search space each step [OK]
Common Mistakes:
  • Thinking Linear Search is faster for sorted lists
  • Ignoring list size impact
  • Confusing sorted vs unsorted list performance
2. Which Rust code snippet correctly implements a linear search for a value in a slice?
easy
A. fn linear_search(arr: &[i32], target: i32) -> Option<usize> { let mut i = 0; while i < arr.len() { if arr[i] == target { return Some(i); } i += 1; } None }
B. fn linear_search(arr: &[i32], target: i32) -> Option<usize> { for i in 0..arr.len()-1 { if arr[i] == target { return Some(i); } } None }
C. fn linear_search(arr: &[i32], target: i32) -> usize { for i in 0..arr.len() { if arr[i] == target { return i; } } 0 }
D. fn linear_search(arr: &[i32], target: i32) -> Option<usize> { for i in 1..arr.len() { if arr[i] == target { return Some(i); } } None }

Solution

  1. Step 1: Check function signature and return type

    Correct implementations should return Option<usize>, idiomatic for search functions. Returning plain usize with 0 on not found is ambiguous since index 0 is valid.
  2. Step 2: Verify loop correctness and indexing

    The for loop from 0 to arr.len()-1 misses the last element. The while loop with mutable i from 0 while i < arr.len() covers all indices correctly. The for loop from 1 skips index 0.
  3. Final Answer:

    While loop version -> Option A
  4. Quick Check:

    Correct linear search loop and return [OK]
Hint: Check loop covers all indices and returns Option properly [OK]
Common Mistakes:
  • Skipping first element in loop
  • Returning ambiguous index instead of Option
  • Incorrect loop bounds
3. What is the output of this Rust code using binary search on a sorted array?
let arr = [2, 4, 6, 8, 10];
let target = 6;
let result = arr.binary_search(&target);
println!("{:?}", result);
medium
A. Err(2)
B. Ok(2)
C. Ok(3)
D. Err(3)

Solution

  1. Step 1: Understand binary_search return type

    Rust's binary_search returns Ok(index) if found, Err(insert_pos) if not found.
  2. Step 2: Find target index in array

    Array is [2,4,6,8,10], target 6 is at index 2 (0-based).
  3. Final Answer:

    Ok(2) -> Option B
  4. Quick Check:

    binary_search returns Ok(index) when found [OK]
Hint: binary_search returns Ok(index) if found [OK]
Common Mistakes:
  • Confusing Ok and Err results
  • Miscounting zero-based index
  • Assuming Err means found
4. Identify the bug in this Rust binary search implementation and select the fix:
fn binary_search(arr: &[i32], target: i32) -> Option<usize> {
    let mut low = 0;
    let mut high = arr.len();
    while low <= high {
        let mid = (low + high) / 2;
        if arr[mid] == target {
            return Some(mid);
        } else if arr[mid] < target {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    None
}
medium
A. Change high initialization to arr.len() - 1
B. Change while condition to low > high
C. Change mid calculation to low + (high - low) / 2
D. No bug, code is correct

Solution

  1. Step 1: Analyze high variable initialization

    High is set to arr.len(), which is out of bounds since valid indices are 0 to arr.len()-1.
  2. Step 2: Fix high initialization

    Set high to arr.len() - 1 to avoid index out of bounds error when accessing arr[mid].
  3. Final Answer:

    Change high initialization to arr.len() - 1 -> Option A
  4. Quick Check:

    High must be last valid index [OK]
Hint: High index must be last valid array index [OK]
Common Mistakes:
  • Using arr.len() as high causes out of bounds
  • Changing while condition incorrectly
  • Ignoring mid calculation overflow
5. You have a sorted list of 10,000 elements and want to find if a value exists. Which approach minimizes average search steps considering the cost of comparisons and index calculations?

Assume:
- Each comparison costs 1 unit
- Each index calculation (like mid) costs 2 units
- Linear search does only comparisons
- Binary search does comparisons + index calculations per step
hard
A. Linear search is cheaper because it avoids index calculations
B. Both have equal cost on average
C. Binary search is cheaper because it reduces comparisons drastically despite index costs
D. Linear search is cheaper only if the element is near the start

Solution

  1. Step 1: Calculate linear search average cost

    Linear search average steps = n/2 = 5000 comparisons, cost = 5000 * 1 = 5000 units.
  2. Step 2: Calculate binary search average cost

    Binary search steps = log2(10000) ≈ 14 steps. Each step costs 1 (comparison) + 2 (index calc) = 3 units. Total = 14 * 3 = 42 units.
  3. Step 3: Compare costs

    42 units (binary) << 5000 units (linear), so binary search is cheaper on average.
  4. Final Answer:

    Binary search is cheaper because it reduces comparisons drastically despite index costs -> Option C
  5. Quick Check:

    Binary search cost << Linear search cost [OK]
Hint: Binary search steps grow logarithmically, beating linear cost [OK]
Common Mistakes:
  • Ignoring index calculation cost
  • Assuming linear search always cheaper
  • Misestimating average steps
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