Binary Search : Mastering Efficiency
Mastering Binary Search in Kotlin: A Beginner-Friendly Guide.

Senior Android Engineer from Bangladesh. Love to contribute in Open-Source. Indie Music Producer.
Search for a command to run...
Mastering Binary Search in Kotlin: A Beginner-Friendly Guide.

Senior Android Engineer from Bangladesh. Love to contribute in Open-Source. Indie Music Producer.
No comments yet. Be the first to comment.
A practical guide to choosing the right coroutine primitive for your Android/Kotlin projects

This guide explains what Channels are, when to use them, how to use them correctly, and when NOT to use them β in simple, professional language. 1. What problem do Channels solve? In Kotlin coroutines, you often have multiple coroutines running at t...

Learn how to build preview-safe ViewModels in Jetpack Compose using Hilt.

HandlerInterceptor vs Filter in Spring Boot: A Practical Guide with JNDI Injection Prevention

Simple In-Memory Caching: A Tiny Trick with Massive Impact

Ever wondered how Google finds your search results so quickly? Or perhaps you've been in a library searching for a book? These everyday situations rely on Binary Search, an elegant and powerful algorithm. Let's explore Binary Search using Kotlin, with real-life examples, in an easy-to-understand way.
Binary Search is a smart detective. It works like this:
Sort the List: Imagine you have a dictionary, and you want to find a word. First, make sure your book is sorted alphabetically.
Divide and Conquer: Binary Search breaks the problem into smaller pieces. It starts by checking the word in the middle of the book.
The "Aha!" Moment: If that word is what you're looking for, you're done! If not, you'll know whether your word is before or after the word in the middle.
Choose a Half: Based on this discovery, you discard half of the book. You're now only interested in the remaining half.
Repeat: Keep doing this until you find your word or you've narrowed it down to just one possibility.
Let's relate this to everyday situations:
Imagine you're looking for the word "serendipity" in a giant dictionary. You open it in the middle and see "scoop." Since "serendipity" is further down the alphabet, you know it must be in the latter part of the dictionary. You've already eliminated half of the book. Repeat until you find it.
Ever wonder how Google retrieves search results from billions of web pages almost instantly? Binary Search is the secret. Google organizes web pages by keywords. When you search for "puppies," Google doesn't check every page. It does a Binary Search in its keyword index, quickly narrowing down the relevant pages.
Before smartphones, phonebooks were our contacts database. Searching for "Romman Sabbir"? You wouldn't start from page one. You'd open somewhere in the middle, say "Roman," and decide whether to look before or after that point. Binary Search is in action again!
fun binarySearch(arr: List<Int>, target: Int): Int? {
var left = 0
var right = arr.size - 1
while (left <= right) {
val mid = left + (right - left) / 2
if (arr[mid] == target) {
return mid // Found the target
} else if (arr[mid] < target) {
left = mid + 1 // Adjust left boundary
} else {
right = mid - 1 // Adjust right boundary
}
}
return null // Target not found
}
This Kotlin function finds a number in a sorted list (arr). It uses left and right as search boundaries.
Initialize: Start with the entire collection (left at the start and right at the end).
Divide: Calculate the middle element (mid) in the current search space.
Conquer: Compare arr[mid] with the target:
If they match, return the target's index.
If arr[mid] is less than the target, move left to mid + 1.
If arr[mid] is greater than the target, move right to mid - 1.
Repeat: Keep dividing the search space and repeating steps 2 and 3 until the target is found or there's only one possibility left.
Let's find the number 11 in a sorted list of numbers:
fun main() {
val numbers = listOf(1, 3, 5, 7, 9, 11, 13, 15, 17, 19)
val target = 11
val result = binarySearch(numbers, target)
if (result != null) {
println("Found $target at index $result.")
} else {
println("$target not found in the list.")
}
}
Running this code prints "Found 11 at index 5."
Binary Search's beauty lies in its efficiency. It has a time complexity of O(log n), meaning it can locate an item in a sorted list of n elements in logarithmic time. In contrast, linear search has a time complexity of O(n), making it much slower for larger collections.
That's it for today. Happy Coding...