Bird
Raised Fist0
DSA Cprogramming~30 mins

Binary Search Iterative Approach in DSA C - Build from Scratch

Choose your learning style10 modes available
Binary Search Iterative Approach
📖 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

  1. 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.
  2. 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.
  3. Final Answer:

    To repeatedly divide the search range until the target is found or range is empty -> Option D
  4. 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

  1. Step 1: Understand overflow risk

    Adding low + high directly can overflow if both are large integers.
  2. Step 2: Use safe middle calculation

    Calculating low + (high - low) / 2 avoids overflow by subtracting first.
  3. Final Answer:

    int mid = low + (high - low) / 2; -> Option C
  4. Quick Check:

    Safe mid calculation avoids overflow [OK]
Hint: Use low + (high - low) / 2 to prevent overflow [OK]
Common Mistakes:
  • Using (low + high) / 2 causing overflow
  • Subtracting incorrectly in middle calculation
  • Multiplying indices which is wrong
3. What will be the output of the following C code snippet using iterative binary search?
int arr[] = {2, 4, 6, 8, 10};
int n = 5;
int target = 6;
int low = 0, high = n - 1;
int mid;
while (low <= high) {
    mid = low + (high - low) / 2;
    if (arr[mid] == target) {
        printf("%d", mid);
        break;
    } else if (arr[mid] < target) {
        low = mid + 1;
    } else {
        high = mid - 1;
    }
}
medium
A. 3
B. 2
C. 1
D. -1

Solution

  1. Step 1: Trace the binary search steps

    Initial low=0, high=4, mid=2. arr[2]=6 matches target 6.
  2. Step 2: Print the mid index

    Since arr[mid] == target, the code prints 2 and breaks the loop.
  3. Final Answer:

    2 -> Option B
  4. 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

  1. Step 1: Analyze loop condition

    The loop uses while (low < high), which misses checking when low equals high.
  2. Step 2: Correct loop condition

    It should be while (low <= high) to include the last element in search.
  3. Final Answer:

    The loop condition should be while (low <= high) -> Option A
  4. 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

  1. Step 1: Trace search for target 10

    Initial low=0, high=6, mid=3 (arr[3]=7). Since 7 < 10, low=mid+1=4.
  2. Step 2: Continue search narrowing range

    Now low=4, high=6, mid=5 (arr[5]=11). Since 11 > 10, high=mid-1=4.
  3. 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.
  4. Final Answer:

    -1 (target not found) -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard