What if you could find anything in a huge list in just a few steps instead of searching forever?
Why Binary Search as Divide and Conquer in DSA C?
Imagine you have a huge phone book with thousands of names sorted alphabetically. You want to find one person's phone number. If you start from the first page and look at every name one by one, it will take a very long time.
Looking through each name one by one is slow and tiring. It wastes time because you check many names that are not the one you want. It is easy to make mistakes or lose your place in the book.
Binary Search uses a smart way to find the name quickly by always cutting the search area in half. It looks at the middle name, decides if the target is before or after it, and then repeats the process on the smaller half. This way, it finds the name very fast without checking every entry.
int find(int arr[], int size, int target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) return i;
}
return -1;
}int binarySearch(int arr[], int left, int right, int target) {
if (left > right) return -1;
int mid = left + (right - left) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] > target) return binarySearch(arr, left, mid - 1, target);
return binarySearch(arr, mid + 1, right, target);
}Binary Search makes it possible to find items in huge sorted lists quickly and efficiently.
When you search for a contact on your phone, the phone uses a method like Binary Search to find the name fast instead of scrolling through the whole list.
Manual search checks every item and is slow.
Binary Search cuts the search area in half each time.
This method is fast and efficient for sorted data.