Bird
Raised Fist0
DSA C++programming~5 mins

Binary Search as Divide and Conquer in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind the divide and conquer approach in binary search?
Divide the sorted list into two halves, compare the middle element with the target, then recursively search in the half where the target can be.
Click to reveal answer
beginner
In binary search, what happens if the middle element is equal to the target?
The search stops because the target is found at the middle position.
Click to reveal answer
beginner
Why must the list be sorted for binary search to work?
Because binary search decides which half to search next based on comparisons, sorting ensures the target is in one half only.
Click to reveal answer
intermediate
What is the time complexity of binary search and why?
O(log n) because each step divides the search space in half, reducing the problem size exponentially.
Click to reveal answer
intermediate
Show the recursive formula for binary search on an array segment [low, high].
If low > high, return not found. Else, mid = low + (high - low) / 2. If target == arr[mid], return mid. If target < arr[mid], search [low, mid-1]. Else search [mid+1, high].
Click to reveal answer
What is the first step in binary search on a sorted array?
ASort the array
BCheck the first element
CFind the middle element and compare it with the target
DSearch the entire array linearly
If the target is less than the middle element, which part of the array does binary search continue on?
ALeft half
BMiddle element only
CWhole array
DRight half
What condition ends the binary search recursion?
AWhen low index is greater than high index
BWhen the array is empty
CWhen the target is not in the array
DWhen the middle element is found
What is the worst-case time complexity of binary search?
AO(n)
BO(log n)
CO(n log n)
DO(1)
Which of these is NOT required for binary search to work correctly?
ASorted array
BRandom access to elements
CComparisons to decide search half
DArray size must be a power of two
Explain how binary search uses divide and conquer to find a target in a sorted array.
Think about how the problem size reduces each step.
You got /4 concepts.
    Describe the base cases and recursive steps in the binary search algorithm.
    Focus on when the search stops and how it continues.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main idea behind Binary Search as a divide and conquer algorithm?
      easy
      A. It divides the search space into two halves and discards one half each time.
      B. It searches every element one by one until it finds the target.
      C. It sorts the array before searching for the element.
      D. It uses recursion to add elements to the array.

      Solution

      1. Step 1: Understand divide and conquer in binary search

        Binary search splits the array into two halves and decides which half to continue searching based on the middle element.
      2. Step 2: Identify the main action in binary search

        It discards the half where the target cannot be, reducing the search space quickly.
      3. Final Answer:

        It divides the search space into two halves and discards one half each time. -> Option A
      4. Quick Check:

        Divide and conquer = split and discard half [OK]
      Hint: Binary search halves the search space each step [OK]
      Common Mistakes:
      • Thinking binary search checks every element
      • Confusing binary search with linear search
      • Assuming binary search sorts the array
      2. Which of the following is the correct syntax to calculate the middle index in binary search in C++?
      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 why to avoid overflow

        Using (low + high) / 2 can cause overflow if low and high are large integers.
      2. Step 2: Use safe middle calculation

        Calculating mid as low + (high - low) / 2 avoids overflow by subtracting before adding.
      3. Final Answer:

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

        Safe mid calculation = low + (high - low)/2 [OK]
      Hint: Use low + (high - low)/2 to avoid overflow [OK]
      Common Mistakes:
      • Using (low + high)/2 causing overflow
      • Using subtraction incorrectly in mid calculation
      • Multiplying low and high instead of adding
      3. What will be the output of the following C++ code snippet?
      int binarySearch(int arr[], int low, int high, int x) {
          if (low > high) return -1;
          int mid = low + (high - low) / 2;
          if (arr[mid] == x) return mid;
          else if (arr[mid] > x) return binarySearch(arr, low, mid - 1, x);
          else return binarySearch(arr, mid + 1, high, x);
      }
      
      int main() {
          int arr[] = {2, 4, 6, 8, 10};
          int n = 5;
          int result = binarySearch(arr, 0, n - 1, 6);
          std::cout << result;
          return 0;
      }
      medium
      A. 3
      B. 4
      C. -1
      D. 2

      Solution

      1. Step 1: Trace the binary search calls

        Initial call: low=0, high=4, mid=2, arr[2]=6 matches target 6, so return 2.
      2. Step 2: Return the index found

        Since arr[2] == 6, the function returns 2 immediately.
      3. Final Answer:

        2 -> Option D
      4. Quick Check:

        Index of 6 in array = 2 [OK]
      Hint: Check middle element first to find index quickly [OK]
      Common Mistakes:
      • Confusing index with value
      • Not updating mid correctly
      • Returning -1 when element is present
      4. Find the error in the following binary search code snippet:
      int binarySearch(int arr[], int low, int high, int x) {
          while (low <= high) {
              int mid = low + (high - low) / 2;
              if (arr[mid] == x) return mid;
              else if (arr[mid] < x) low = mid;
              else high = mid - 1;
          }
          return -1;
      }
      medium
      A. The update low = mid should be low = mid + 1.
      B. The loop condition should be low < high.
      C. The mid calculation can cause overflow.
      D. The function should return mid + 1 instead of mid.

      Solution

      1. Step 1: Analyze the update of low pointer

        When arr[mid] < x, low should move to mid + 1 to avoid infinite loop.
      2. Step 2: Identify the infinite loop cause

        Setting low = mid keeps low same if mid equals low, causing infinite loop.
      3. Final Answer:

        The update low = mid should be low = mid + 1. -> Option A
      4. Quick Check:

        Increment low past mid to avoid infinite loop [OK]
      Hint: Increment low by 1 after mid when moving right [OK]
      Common Mistakes:
      • Not incrementing low causing infinite loop
      • Using wrong loop condition
      • Ignoring overflow in mid calculation
      5. You have a sorted array with duplicate elements: {1, 2, 2, 2, 3, 4}. How can you modify binary search to find the first occurrence of 2?
      hard
      A. Return immediately when 2 is found.
      B. Keep searching left half even after finding 2 to find first occurrence.
      C. Search right half after finding 2 to find last occurrence.
      D. Use linear search instead of binary search.

      Solution

      1. Step 1: Understand duplicates in binary search

        Standard binary search returns any occurrence, not necessarily the first.
      2. Step 2: Modify search to find first occurrence

        When arr[mid] == target, continue searching left half to find earlier occurrence.
      3. Step 3: Stop when mid is first or left element is different

        Return mid if it is first element or previous element is different.
      4. Final Answer:

        Keep searching left half even after finding 2 to find first occurrence. -> Option B
      5. Quick Check:

        Find first occurrence by searching left after match [OK]
      Hint: After match, move left to find first duplicate [OK]
      Common Mistakes:
      • Returning first found index without checking left
      • Searching right half after finding target
      • Using linear search unnecessarily
      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