📖 Scenario: You have a sorted list of book IDs in a library. You want to find if a specific book ID is available using a fast method called binary search.
🎯 Goal: Build a program that uses the iterative binary search method to find a book ID in a sorted array.
📋 What You'll Learn
Create a sorted array of integers called books with the exact values: 101, 203, 305, 407, 509, 611, 713
Create an integer variable called target with the value 407
Write an iterative binary search function called binary_search that takes the array, its size, and the target value, and returns the index of the target or -1 if not found
Print the result index with the exact format: "Book found at index: X" or "Book not found" if the index is -1
💡 Why This Matters
🌍 Real World
Binary search is used in many software systems to quickly find data in sorted lists, like searching for a contact in a phone book or a product in an online store.
💼 Career
Understanding binary search helps in software development roles where efficient data searching and algorithm optimization are important.
Progress0 / 4 steps
1
Create the sorted array of book IDs
Create an integer array called books with these exact values: 101, 203, 305, 407, 509, 611, 713
DSA C
Hint
Use curly braces to list the numbers inside the array.
2
Create the target book ID variable
Create an integer variable called target and set it to 407
DSA C
Hint
Use int target = 407; to create the variable.
3
Write the iterative binary search function
Write a function called binary_search that takes int arr[], int size, and int target as parameters and returns the index of target in arr using an iterative binary search. Return -1 if not found.
DSA C
Hint
Use a while loop with left and right pointers to find the target.
4
Print the search result
Call binary_search with books, its size 7, and target. Store the result in index. Then print "Book found at index: X" if index is not -1, otherwise print "Book not found".
DSA C
Hint
Use printf to print the result with the exact format.
Practice
(1/5)
1. What is the main purpose of the while loop in the iterative binary search algorithm?
easy
A. To swap elements in the array
B. To sort the array before searching
C. To print all elements in the array
D. To repeatedly divide the search range until the target is found or range is empty
Solution
Step 1: Understand the role of the loop
The while loop runs as long as the search range is valid, narrowing down the range by half each time.
Step 2: Identify the loop's goal
The loop stops when the target is found or when the search range becomes empty, meaning the target is not present.
Final Answer:
To repeatedly divide the search range until the target is found or range is empty -> Option D
Quick Check:
Loop narrows search range until target found or range empty [OK]
Hint: Loop halves search range until target found or no range left [OK]
Common Mistakes:
Thinking the loop sorts the array
Assuming the loop swaps elements
Believing the loop prints elements
2. Which of the following is the correct way to calculate the middle index in an iterative binary search in C to avoid overflow?
easy
A. int mid = (low + high) / 2;
B. int mid = (low - high) / 2;
C. int mid = low + (high - low) / 2;
D. int mid = (low * high) / 2;
Solution
Step 1: Understand overflow risk
Adding low + high directly can overflow if both are large integers.
Since arr[mid] == target, the code prints 2 and breaks the loop.
Final Answer:
2 -> Option B
Quick Check:
Target found at index 2 [OK]
Hint: Check mid index where target matches first [OK]
Common Mistakes:
Confusing index with value
Not updating low/high correctly
Assuming target not found
4. Identify the error in the following iterative binary search code snippet:
int binarySearch(int arr[], int n, int target) {
int low = 0, high = n - 1;
while (low < high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
medium
A. The loop condition should be while (low <= high)
B. The mid calculation causes overflow
C. The function returns mid instead of value
D. The array is not sorted before searching
Solution
Step 1: Analyze loop condition
The loop uses while (low < high), which misses checking when low equals high.
Step 2: Correct loop condition
It should be while (low <= high) to include the last element in search.
Final Answer:
The loop condition should be while (low <= high) -> Option A
Quick Check:
Loop must include low == high to check last element [OK]
Hint: Use <= in loop to check all elements including last [OK]
Common Mistakes:
Using < instead of <= in loop condition
Ignoring overflow in mid calculation (not here)
Confusing return value with index
Assuming array needs sorting inside function
5. Given a sorted array int arr[] = {1, 3, 5, 7, 9, 11, 13}, write the iterative binary search steps to find the target 10. What will be the final output of the search function?
hard
A. -1 (target not found)
B. Index 4
C. Index 5
D. Index 3
Solution
Step 1: Trace search for target 10
Initial low=0, high=6, mid=3 (arr[3]=7). Since 7 < 10, low=mid+1=4.
Step 2: Continue search narrowing range
Now low=4, high=6, mid=5 (arr[5]=11). Since 11 > 10, high=mid-1=4.
Step 3: Final check
Now low=4, high=4, mid=4 (arr[4]=9). Since 9 < 10, low=mid+1=5. Now low=5 > high=4, loop ends.
Final Answer:
-1 (target not found) -> Option A
Quick Check:
Target 10 not in array, returns -1 [OK]
Hint: If target not found, binary search returns -1 [OK]
Common Mistakes:
Assuming closest smaller element index is returned
Not updating low/high correctly
Stopping search too early
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.