Bird
Raised Fist0
DSA C++programming~10 mins

Why Binary Search and What Sorted Order Gives You in DSA C++ - Test Your Knowledge

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start binary search with the middle index.

DSA C++
int mid = (low [1] high) / 2;
Drag options to blanks, or click blank then click option'
A-
B+
C*
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using subtraction instead of addition
Using multiplication instead of addition
2fill in blank
medium

Complete the code to compare the middle element with the target value.

DSA C++
if (arr[mid] [1] target) {
Drag options to blanks, or click blank then click option'
A<=
B>=
C==
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using inequality instead of equality
Using less than or greater than operators here
3fill in blank
hard

Fix the error in updating the low index when target is greater than middle element.

DSA C++
if (arr[mid] < target) {
    low = [1];
}
Drag options to blanks, or click blank then click option'
Amid + 1
Bmid - 1
Clow + 1
Dhigh - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Setting low to mid - 1
Setting low to high - 1
4fill in blank
hard

Fill both blanks to correctly update high index and return found index.

DSA C++
if (arr[mid] > target) {
    high = [1];
} else {
    return [2];
}
Drag options to blanks, or click blank then click option'
Amid - 1
Bmid + 1
Cmid
Dlow
Attempts:
3 left
💡 Hint
Common Mistakes
Setting high to mid + 1
Returning low instead of mid
5fill in blank
hard

Fill all three blanks to complete the binary search loop and return -1 if not found.

DSA C++
while ([1] <= [2]) {
    int mid = (low + high) / 2;
    if (arr[mid] == target) {
        return [3];
    }
    // other conditions omitted
}
return -1;
Drag options to blanks, or click blank then click option'
Alow
Bhigh
Cmid
Dtarget
Attempts:
3 left
💡 Hint
Common Mistakes
Using target in loop condition
Returning low or high instead of mid

Practice

(1/5)
1. Why is it important for a list to be sorted before applying binary search?
easy
A. Because binary search can only search for numbers, not strings
B. Because binary search divides the list based on order to find elements quickly
C. Because binary search works only on lists with unique elements
D. Because binary search requires the list to be reversed

Solution

  1. Step 1: Understand binary search working

    Binary search works by repeatedly dividing the list into halves and deciding which half to search next based on order.
  2. Step 2: Importance of sorted order

    If the list is not sorted, dividing by order does not help because elements are not arranged predictably.
  3. Final Answer:

    Because binary search divides the list based on order to find elements quickly -> Option B
  4. Quick Check:

    Sorted list needed for binary search [OK]
Hint: Binary search needs sorted data to halve search space fast [OK]
Common Mistakes:
  • Thinking binary search works on unsorted lists
  • Confusing binary search with linear search
  • Believing binary search requires unique elements
2. Which of the following is the correct syntax to perform binary search on a sorted vector v in C++ using std::binary_search?
easy
A. std::binary_search(v.begin(), v.end(), target);
B. std::binary_search(v, target);
C. binary_search(v, 0, v.size(), target);
D. std::binary_search(target, v.begin(), v.end());

Solution

  1. Step 1: Recall std::binary_search parameters

    It takes two iterators marking the start and end of the range, and the target value.
  2. Step 2: Match correct syntax

    std::binary_search(v.begin(), v.end(), target); correctly uses v.begin(), v.end(), and target in that order.
  3. Final Answer:

    std::binary_search(v.begin(), v.end(), target); -> Option A
  4. Quick Check:

    Correct iterator usage in binary_search [OK]
Hint: Use begin() and end() iterators with binary_search [OK]
Common Mistakes:
  • Passing vector directly without iterators
  • Swapping target and iterator arguments
  • Using incorrect function signature
3. What will be the output of the following C++ code?
std::vector<int> v = {2, 4, 6, 8, 10};
bool found = std::binary_search(v.begin(), v.end(), 6);
std::cout << (found ? "Found" : "Not Found") << std::endl;
medium
A. Runtime Error
B. Not Found
C. Compilation Error
D. Found

Solution

  1. Step 1: Check if vector is sorted

    The vector {2, 4, 6, 8, 10} is sorted in ascending order.
  2. Step 2: Apply binary_search for 6

    6 is present in the vector, so binary_search returns true.
  3. Final Answer:

    Found -> Option D
  4. Quick Check:

    6 exists in sorted vector, so output is Found [OK]
Hint: Check if target is in sorted list to predict binary_search output [OK]
Common Mistakes:
  • Assuming binary_search returns index instead of bool
  • Forgetting vector must be sorted
  • Confusing output strings
4. Identify the error in the following code snippet that attempts to use binary search:
std::vector<int> v = {5, 3, 1, 4, 2};
bool found = std::binary_search(v.begin(), v.end(), 3);
std::cout << (found ? "Yes" : "No") << std::endl;
medium
A. Missing include for vector header
B. binary_search syntax is incorrect
C. The vector is not sorted before binary_search
D. The target value 3 is not in the vector

Solution

  1. Step 1: Check vector order

    The vector {5, 3, 1, 4, 2} is not sorted.
  2. Step 2: Understand binary_search requirement

    binary_search requires the vector to be sorted; otherwise, the result is undefined or incorrect.
  3. Final Answer:

    The vector is not sorted before binary_search -> Option C
  4. Quick Check:

    Unsorted vector breaks binary_search [OK]
Hint: Always sort before binary_search to avoid wrong results [OK]
Common Mistakes:
  • Ignoring the need to sort before searching
  • Assuming binary_search sorts internally
  • Thinking target absence causes error
5. Given a sorted vector v = {1, 3, 5, 7, 9, 11}, you want to find the smallest element greater than or equal to 6 using binary search logic. Which approach correctly achieves this?
hard
A. Use std::lower_bound to find the first element not less than 6
B. Use std::binary_search to check if 6 exists, then pick next element
C. Use std::upper_bound to find the first element greater than 6, then subtract one
D. Sort the vector again before searching

Solution

  1. Step 1: Understand the problem

    We want the smallest element >= 6, which is the definition of lower bound.
  2. Step 2: Choose correct function

    std::lower_bound returns iterator to first element not less than the target, perfect for this need.
  3. Step 3: Analyze other options

    binary_search only tells presence, upper_bound finds strictly greater elements, sorting again is unnecessary.
  4. Final Answer:

    Use std::lower_bound to find the first element not less than 6 -> Option A
  5. Quick Check:

    Lower bound finds smallest element >= target [OK]
Hint: Use lower_bound for smallest element >= target in sorted list [OK]
Common Mistakes:
  • Using binary_search to find element position
  • Confusing upper_bound with lower_bound
  • Unnecessary sorting before search
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