📖 Scenario: You are helping a librarian find a specific book ID in a list of books on a shelf. The librarian wants to check each book one by one until the book is found.
🎯 Goal: Build a simple program that searches for a given book ID in a list using the linear search method.
📋 What You'll Learn
Create a vector of book IDs
Create a variable for the target book ID to find
Implement linear search to find the target book ID
Print the index of the found book or -1 if not found
💡 Why This Matters
🌍 Real World
Searching for an item in a list one by one is common in many real-life tasks like finding a book on a shelf or a contact in a phone.
💼 Career
Understanding linear search helps in learning how to find data in arrays or lists, which is a fundamental skill in programming and software development.
Progress0 / 4 steps
1
Create the list of book IDs
Create a vector called book_ids with these exact values: 101, 203, 405, 302, 150
DSA Rust
Hint
Use let to create a vector with vec![...] containing the numbers.
2
Set the target book ID to find
Create a variable called target_id and set it to 302
DSA Rust
Hint
Use let target_id = 302; to create the variable.
3
Implement linear search to find the target book ID
Use a for loop with variables index and id to iterate over book_ids.iter().enumerate(). Inside the loop, check if id == &target_id. If yes, print index and return from main. After the loop, print -1 if not found.
DSA Rust
Hint
Use book_ids.iter().enumerate() to get index and id. Compare id with target_id using == &target_id. Print index and return if found. Print -1 after loop if not found.
4
Print the result of the search
Run the program to print the index of target_id in book_ids or -1 if not found.
DSA Rust
Hint
The program should print 3 because 302 is at index 3 in the vector.
Practice
(1/5)
1. What is the main idea behind the Linear Search Algorithm?
easy
A. Divide the list into halves repeatedly to find the target
B. Use a hash table to find the target instantly
C. Sort the list first then search using binary steps
D. Check each element one by one until the target is found or list ends
Solution
Step 1: Understand linear search process
Linear search checks each element in order from start to end.
Step 2: Compare with other search methods
Binary search divides list, hash uses extra memory, linear is simple sequential check.
Final Answer:
Check each element one by one until the target is found or list ends -> Option D
Quick Check:
Linear search = sequential check [OK]
Hint: Linear search means checking items one by one [OK]
Common Mistakes:
Confusing linear search with binary search
Thinking linear search requires sorted data
Assuming linear search uses extra memory
2. Which of the following is the correct Rust syntax to start a linear search loop over a vector arr?
easy
A. while i < arr.len() { }
B. for i in arr { }
C. for i in 0..arr.len() { }
D. loop i in arr.len() { }
Solution
Step 1: Identify correct Rust for loop syntax
Rust uses for i in 0..arr.len() to loop over indices.
Step 2: Check other options for syntax errors
for i in arr iterates over values, not indices; while needs initialization; loop i in is invalid.
Final Answer:
for i in 0..arr.len() { } -> Option C
Quick Check:
Rust for loop over range = for i in 0..len() [OK]
Hint: Use for i in 0..arr.len() to loop indices [OK]
Common Mistakes:
Using for i in arr to get indices instead of values
Writing invalid loop syntax like loop i in ...
Forgetting to initialize loop variable in while loops
3. What will be the output of this Rust code snippet?
let arr = vec![3, 5, 7, 9];
let target = 7;
let mut index = -1;
for i in 0..arr.len() {
if arr[i] == target {
index = i as i32;
break;
}
}
println!("{}", index);
Hint: Stop loop at first match, print that index [OK]
Common Mistakes:
Not breaking loop after finding target
Printing index before loop ends
Confusing index type casting
4. Identify the error in this Rust linear search code and choose the fix:
let arr = vec![1, 2, 3];
let target = 4;
let mut found = false;
for i in 0..arr.len() {
if arr[i] = target {
found = true;
break;
}
}
println!("{}", found);
medium
A. Use '==' for comparison instead of '='
B. Change 'found' to integer type
C. Remove the break statement
D. Use while loop instead of for loop
Solution
Step 1: Check the if condition syntax
The code uses '=' which is assignment, not comparison. It should be '==' to compare values.
Step 2: Verify other options
Changing 'found' type or removing break won't fix syntax error. Using while loop is valid but not necessary.
Final Answer:
Use '==' for comparison instead of '=' -> Option A
Quick Check:
Comparison needs '==' not '=' [OK]
Hint: Use '==' to compare values, '=' assigns [OK]
Common Mistakes:
Using '=' instead of '==' in if conditions
Removing break causing unnecessary iterations
Changing variable types unnecessarily
5. You want to find all indices of a target value in a vector arr using linear search in Rust. Which approach correctly collects all matching indices?
hard
A. Use a loop over indices, push index to a vector when element equals target
B. Break the loop at first match and return that index
C. Sort the vector first, then use binary search for all matches
D. Use a hash map to store element counts and find indices
Solution
Step 1: Understand requirement to find all indices
We must check every element and collect indices where element equals target.
Step 2: Evaluate options for correctness
Breaking loop stops early, sorting changes order, hash map counts but doesn't store indices. Only pushing indices in loop works.
Final Answer:
Use a loop over indices, push index to a vector when element equals target -> Option A
Quick Check:
Collect all matches by looping and storing indices [OK]
Hint: Collect indices by checking all elements without breaking [OK]
Common Mistakes:
Breaking loop too early to find all matches
Sorting vector which changes original order
Using hash map counts instead of indices
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.