📖 Scenario: You have a sorted list of numbers representing the floors of a building where a special event is happening. You want to quickly find if a certain floor number is part of this list.
🎯 Goal: Build a binary search function using divide and conquer to find if a floor number exists in the sorted list.
📋 What You'll Learn
Create a sorted array called floors with the exact values: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Create a variable called targetFloor and set it to 14
Write a function called binarySearch that takes arr, target, start, and end as parameters and uses divide and conquer to find the target
Call binarySearch with floors, targetFloor, 0, and floors.length - 1
Print the result of the binary search function
💡 Why This Matters
🌍 Real World
Binary search is used in many real-world applications like searching in phone books, dictionaries, or any sorted data quickly.
💼 Career
Understanding binary search is fundamental for software developers and engineers to write efficient search algorithms and optimize performance.
Progress0 / 4 steps
1
Create the sorted array of floors
Create a sorted array called floors with these exact values: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
DSA Typescript
Hint
Use const floors = [...] to create the array with the exact numbers.
2
Set the target floor to search
Create a variable called targetFloor and set it to 14
DSA Typescript
Hint
Use const targetFloor = 14; to set the floor you want to find.
3
Write the binary search function
Write a function called binarySearch that takes arr, target, start, and end as parameters and uses divide and conquer to find the target. It should return the index of the target if found, or -1 if not found.
DSA Typescript
Hint
Use recursion to divide the array and check the middle element each time.
4
Call the function and print the result
Call binarySearch with floors, targetFloor, 0, and floors.length - 1. Print the result using console.log.
DSA Typescript
Hint
Call the function with the full array range and print the returned index.
Practice
(1/5)
1. What is the main idea behind Binary Search as a divide and conquer algorithm?
easy
A. Check every element one by one until the target is found
B. Use a hash table to find the target instantly
C. Sort the list first and then search linearly
D. Repeatedly split the sorted list into halves to find the target
Solution
Step 1: Understand binary search principle
Binary search works by dividing the sorted list into two halves and deciding which half to continue searching in.
Step 2: Compare target with middle element
By comparing the target with the middle element, we eliminate half the list each time, making search efficient.
Final Answer:
Repeatedly split the sorted list into halves to find the target -> Option D
Quick Check:
Divide and conquer = split list halves [OK]
Hint: Divide sorted list in halves to find target fast [OK]
Common Mistakes:
Thinking binary search works on unsorted lists
Searching linearly instead of dividing
Ignoring the middle element comparison
2. Which of the following is the correct TypeScript function signature for a binary search function?
easy
A. function binarySearch(arr: number[], target: number): number
B. function binarySearch(arr: number, target: number[]): number
C. function binarySearch(arr: string[], target: string): void
D. function binarySearch(arr: number[], target: number): void
Solution
Step 1: Identify input and output types
Binary search takes an array of numbers and a target number, returning the index (number) or -1 if not found.
Step 2: Match function signature
function binarySearch(arr: number[], target: number): number matches input types (number array and number) and returns a number index, which is correct.
Final Answer:
function binarySearch(arr: number[], target: number): number -> Option A
Quick Check:
Input: number[], number; Output: number [OK]
Hint: Input array and target number, output index number [OK]
Common Mistakes:
Swapping array and target types
Returning void instead of index
Using wrong array element types
3. What will be the output of the following TypeScript code?
function binarySearch(arr: number[], target: number): number {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
const nums = [2, 4, 6, 8, 10];
console.log(binarySearch(nums, 6));
medium
A. 2
B. 3
C. -1
D. 1
Solution
Step 1: Identify array and target
Array is [2,4,6,8,10], target is 6.
Step 2: Trace binary search steps
Middle index initially is 2 (value 6), which matches target, so function returns 2 immediately.
Final Answer:
2 -> Option A
Quick Check:
Index of 6 in array = 2 [OK]
Hint: Find middle index and compare target [OK]
Common Mistakes:
Confusing index with value
Off-by-one errors in mid calculation
Returning wrong index when target found
4. Identify the bug in this binary search implementation and choose the fix:
function binarySearch(arr: number[], target: number): number {
let left = 0;
let right = arr.length;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
medium
A. Change mid calculation to (left + right + 1) / 2
B. Change while condition to left < right
C. Change right initialization to arr.length - 1
D. Remove else if and use only if statements
Solution
Step 1: Check right boundary initialization
Right should be last valid index, which is arr.length - 1, not arr.length (out of bounds).
Step 2: Understand impact on loop
Using arr.length causes mid to sometimes be out of array range, causing runtime errors.
Final Answer:
Change right initialization to arr.length - 1 -> Option C
Quick Check:
Right boundary = last index [OK]
Hint: Right index must be last valid array index [OK]
Common Mistakes:
Setting right to arr.length causes out-of-bounds
Changing loop condition incorrectly
Miscalculating mid index
5. You have a sorted array with duplicate values: [1, 2, 2, 2, 3, 4]. How would you modify binary search to find the first occurrence of 2?
hard
A. Search the right half after finding 2
B. After finding 2, continue searching left half to find earlier occurrence
C. Return the first found index immediately
D. Use linear search instead of binary search
Solution
Step 1: Understand duplicates in binary search
Standard binary search returns any matching index, not necessarily the first occurrence.
Step 2: Modify search to find first occurrence
After finding target, continue searching left half to check if earlier occurrence exists, updating result accordingly.
Final Answer:
After finding 2, continue searching left half to find earlier occurrence -> Option B
Quick Check:
Find first occurrence by searching left side [OK]
Hint: Keep searching left after match to find first duplicate [OK]
Common Mistakes:
Stopping at first found index
Searching right half after match
Switching to linear search unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.