0
0
DSA C++programming~3 mins

Why Floor and Ceil in Sorted Array in DSA C++?

Choose your learning style9 modes available
The Big Idea

What if you could find the closest match in a huge list instantly, without checking every item?

The Scenario

Imagine you have a sorted list of prices for items in a store. You want to find the closest price that is just less than or equal to your budget (floor), or just greater than or equal to your budget (ceil). Doing this by checking each price one by one is like searching for a book in a huge library by reading every page.

The Problem

Checking each element manually is slow and tiring, especially if the list is very long. It's easy to make mistakes, like missing the closest price or taking too long to find it. This wastes time and can lead to wrong decisions.

The Solution

Using the floor and ceil concept with a sorted array lets you quickly jump to the right place without checking everything. It's like having a smart librarian who points you directly to the closest book you want, saving time and effort.

Before vs After
Before
int floor = -1;
for (int i = 0; i < n; i++) {
  if (arr[i] <= target) floor = arr[i];
}
After
int floor = -1, left = 0, right = n - 1;
while (left <= right) {
  int mid = left + (right - left) / 2;
  if (arr[mid] <= target) {
    floor = arr[mid];
    left = mid + 1;
  } else {
    right = mid - 1;
  }
}
What It Enables

This concept enables lightning-fast searches for closest values in sorted data, making programs efficient and reliable.

Real Life Example

When booking flights, you want the closest cheaper or slightly more expensive ticket than your budget. Floor and ceil help find these options instantly from sorted price lists.

Key Takeaways

Manual search is slow and error-prone for large sorted arrays.

Floor and ceil use smart searching to find closest smaller or larger values quickly.

This makes programs faster and more accurate in real-world tasks like pricing or scheduling.