Bird
Raised Fist0
DSA Rustprogramming~30 mins

Binary Search vs Linear Search Real Cost Difference in DSA Rust - Build Both Approaches

Choose your learning style10 modes available
Binary Search vs Linear Search Real Cost Difference
📖 Scenario: Imagine you have a list of product prices in a store. You want to find if a certain price exists in the list. There are two ways to search: checking each price one by one (linear search) or using a faster method if the list is sorted (binary search).
🎯 Goal: You will create a list of prices, set a target price to find, write code to search for the target using both linear and binary search, and then print the results to see the difference.
📋 What You'll Learn
Create a sorted list of product prices called prices with these exact values: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
Create a variable called target and set it to 70
Write a function called linear_search that takes prices and target and returns true if target is found, otherwise false
Write a function called binary_search that takes prices and target and returns true if target is found, otherwise false
Print the results of both searches exactly as: "Linear Search found: true" and "Binary Search found: true"
💡 Why This Matters
🌍 Real World
Searching is a common task in many apps like shopping, contacts, or files. Knowing the difference between simple and fast search helps make apps quicker.
💼 Career
Understanding search algorithms is important for software developers to write efficient code and optimize performance.
Progress0 / 4 steps
1
Create the sorted list of prices
Create a list called prices with these exact values in order: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
DSA Rust
Hint

Use vec![...] to create a list in Rust.

2
Set the target price to find
Create a variable called target and set it to 70
DSA Rust
Hint

Use let target = 70; to create the variable.

3
Write linear_search and binary_search functions
Write a function called linear_search that takes prices and target and returns true if target is found, otherwise false. Then write a function called binary_search that takes prices and target and returns true if target is found, otherwise false. Use a simple loop for linear search and Rust's built-in binary search method for binary search.
DSA Rust
Hint

Use a for loop to check each price in linear search. Use prices.binary_search(&target) for binary search.

4
Print the search results
Print the results of linear_search and binary_search exactly as: "Linear Search found: true" and "Binary Search found: true"
DSA Rust
Hint

Use println!("Linear Search found: {}", linear_search(&prices, target)); and similarly for binary search.

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