Bird
Raised Fist0
DSA Javascriptprogramming~10 mins

Floor and Ceil in Sorted Array in DSA Javascript - Interactive Practice

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

Complete the code to find the floor value in a sorted array.

DSA Javascript
function findFloor(arr, target) {
  let low = 0, high = arr.length - 1;
  let floor = -1;
  while (low <= high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) {
      return arr[mid];
    } else if (arr[mid] < target) {
      floor = arr[mid];
      low = [1];
    } else {
      high = mid - 1;
    }
  }
  return floor;
}
Drag options to blanks, or click blank then click option'
Alow + 1
Bmid + 1
Cmid - 1
Dhigh - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Setting low to mid - 1 instead of mid + 1 causes infinite loop or wrong result.
Updating high instead of low when arr[mid] < target.
2fill in blank
medium

Complete the code to find the ceil value in a sorted array.

DSA Javascript
function findCeil(arr, target) {
  let low = 0, high = arr.length - 1;
  let ceil = -1;
  while (low <= high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) {
      return arr[mid];
    } else if (arr[mid] > target) {
      ceil = arr[mid];
      high = [1];
    } else {
      low = mid + 1;
    }
  }
  return ceil;
}
Drag options to blanks, or click blank then click option'
Amid - 1
Blow - 1
Chigh + 1
Dmid + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Setting high to mid + 1 instead of mid - 1 causes wrong search direction.
Updating low instead of high when arr[mid] > target.
3fill in blank
hard

Fix the error in the binary search loop condition to avoid infinite loops.

DSA Javascript
function binarySearch(arr, target) {
  let low = 0, high = arr.length - 1;
  while (low [1] high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) {
      return mid;
    } else if (arr[mid] < target) {
      low = mid + 1;
    } else {
      high = mid - 1;
    }
  }
  return -1;
}
Drag options to blanks, or click blank then click option'
A<=
B<
C>=
D>
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' causes missing the last element and possibly wrong results.
Using '>' or '>=' reverses the logic and causes no iterations.
4fill in blank
hard

Fill both blanks to create a function that returns both floor and ceil values for a target in a sorted array.

DSA Javascript
function findFloorAndCeil(arr, target) {
  let low = 0, high = arr.length - 1;
  let floor = -1, ceil = -1;
  while (low <= high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) {
      floor = arr[mid];
      ceil = arr[mid];
      break;
    } else if (arr[mid] < target) {
      floor = arr[mid];
      low = [1];
    } else {
      ceil = arr[mid];
      high = [2];
    }
  }
  return { floor, ceil };
}
Drag options to blanks, or click blank then click option'
Amid + 1
Bmid - 1
Clow + 1
Dhigh - 1
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping low and high updates causes infinite loops.
Using low + 1 or high - 1 incorrectly without mid causes wrong results.
5fill in blank
hard

Fill all three blanks to create a function that returns floor and ceil using a single pass binary search.

DSA Javascript
function floorAndCeil(arr, target) {
  let low = 0, high = arr.length - 1;
  let floor = -1, ceil = -1;
  while (low <= high) {
    let mid = Math.floor((low + high) / 2);
    if (arr[mid] === target) {
      floor = arr[mid];
      ceil = arr[mid];
      break;
    } else if (arr[mid] < target) {
      floor = arr[mid];
      low = [1];
    } else {
      ceil = arr[mid];
      high = [2];
    }
  }
  return { [3] };
}
Drag options to blanks, or click blank then click option'
Amid + 1
Bmid - 1
Cfloor, ceil
Dlow, high
Attempts:
3 left
💡 Hint
Common Mistakes
Returning low and high instead of floor and ceil.
Incorrect pointer updates causing infinite loops.

Practice

(1/5)
1. What does the floor of a number mean in a sorted array context?
easy
A. The greatest element less than or equal to the number
B. The smallest element greater than or equal to the number
C. The average of all elements less than the number
D. The smallest element strictly less than the number

Solution

  1. Step 1: Understand floor definition in sorted array

    The floor of a number is the greatest element in the array that is less than or equal to the given number.
  2. Step 2: Compare with options

    The greatest element less than or equal to the number matches this definition exactly, while others describe ceil or incorrect concepts.
  3. Final Answer:

    The greatest element less than or equal to the number -> Option A
  4. Quick Check:

    Floor = greatest ≤ number [OK]
Hint: Floor is always ≤ number, pick greatest such element [OK]
Common Mistakes:
  • Confusing floor with ceil
  • Thinking floor must be strictly less than number
  • Mixing floor with average or median
2. Which of the following is the correct JavaScript syntax to find the floor of a number x in a sorted array arr using binary search?
easy
A. Use Math.floor(x) directly on array
B. Use a for loop from 0 to arr.length and return first element greater than x
C. Use arr.indexOf(x) to find floor
D. Use a while loop with start = 0, end = arr.length - 1, update mid and check arr[mid] <= x

Solution

  1. Step 1: Understand binary search for floor

    Binary search uses start and end pointers, calculates mid, and checks if arr[mid] <= x to move start or end accordingly.
  2. Step 2: Evaluate options

    Use a while loop with start = 0, end = arr.length - 1, update mid and check arr[mid] <= x correctly describes binary search logic for floor. Options A, B, and C are incorrect or irrelevant.
  3. Final Answer:

    Use a while loop with start=0, end=arr.length-1, update mid and check arr[mid] ≤ x -> Option D
  4. Quick Check:

    Binary search with arr[mid] ≤ x finds floor [OK]
Hint: Binary search with arr[mid] ≤ x finds floor efficiently [OK]
Common Mistakes:
  • Using linear search instead of binary search
  • Using indexOf which only finds exact matches
  • Misusing Math.floor which works on numbers, not arrays
3. What is the output of the following JavaScript code?
const arr = [1, 3, 5, 7, 9];
function findFloor(arr, x) {
  let start = 0, end = arr.length - 1, floor = -1;
  while (start <= end) {
    let mid = Math.floor((start + end) / 2);
    if (arr[mid] <= x) {
      floor = arr[mid];
      start = mid + 1;
    } else {
      end = mid - 1;
    }
  }
  return floor;
}
console.log(findFloor(arr, 6));
medium
A. 6
B. 5
C. 7
D. -1

Solution

  1. Step 1: Trace binary search for floor of 6

    Initial start=0, end=4, floor=-1. mid=2 (arr[2]=5) ≤ 6, floor=5, start=3. mid=3 (arr[3]=7) > 6, end=2. Loop ends.
  2. Step 2: Return floor value

    Floor found is 5, which is the greatest element ≤ 6.
  3. Final Answer:

    5 -> Option B
  4. Quick Check:

    Floor of 6 in [1,3,5,7,9] is 5 [OK]
Hint: Floor is last arr[mid] ≤ x during binary search [OK]
Common Mistakes:
  • Returning mid index instead of value
  • Confusing floor with ceil
  • Not updating floor variable correctly
4. Identify the bug in this JavaScript function to find the ceil of a number x in a sorted array arr:
function findCeil(arr, x) {
  let start = 0, end = arr.length - 1, ceil = -1;
  while (start <= end) {
    let mid = Math.floor((start + end) / 2);
    if (arr[mid] >= x) {
      ceil = arr[mid];
      end = mid + 1;
    } else {
      start = mid + 1;
    }
  }
  return ceil;
}
medium
A. The line end = mid + 1; should be end = mid - 1;
B. The line start = mid + 1; should be start = mid - 1;
C. The initial value of ceil should be 0 instead of -1
D. The while loop condition should be start < end instead of start <= end

Solution

  1. Step 1: Analyze binary search update for ceil

    When arr[mid] ≥ x, we update ceil and must move end to mid - 1 to search left side for smaller ceil.
  2. Step 2: Identify incorrect update

    The code incorrectly sets end = mid + 1, which moves end right, causing infinite loop or wrong result.
  3. Final Answer:

    The line end = mid + 1; should be end = mid - 1; -> Option A
  4. Quick Check:

    For ceil, move end left with end = mid - 1 [OK]
Hint: For ceil, move end left; for floor, move start right [OK]
Common Mistakes:
  • Moving end pointer in wrong direction
  • Confusing ceil logic with floor
  • Incorrect initial ceil value
5. Given a sorted array arr = [2, 4, 6, 8, 10], write a function to find both floor and ceil of a number x. What will be the floor and ceil of x = 5?
hard
A. Floor = 5, Ceil = 5
B. Floor = 6, Ceil = 4
C. Floor = 4, Ceil = 6
D. Floor = 2, Ceil = 10

Solution

  1. Step 1: Understand floor and ceil definitions

    Floor is greatest element ≤ x, ceil is smallest element ≥ x.
  2. Step 2: Find floor and ceil for x=5 in arr

    Elements ≤ 5 are 2 and 4; greatest is 4 (floor). Elements ≥ 5 are 6, 8, 10; smallest is 6 (ceil).
  3. Final Answer:

    Floor = 4, Ceil = 6 -> Option C
  4. Quick Check:

    Floor ≤ 5 = 4, Ceil ≥ 5 = 6 [OK]
Hint: Floor ≤ x max, Ceil ≥ x min in sorted array [OK]
Common Mistakes:
  • Swapping floor and ceil values
  • Assuming floor or ceil equals x if not present
  • Choosing wrong boundary elements
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