Roadmap › Coding Round Practice (DSA in C#) › Module: Sorting, Searching and Recursion
Lessons in this course (14)

10. Binary search

Basic★ Must knowLesson 10 of 14
csharp
// O(log n) on a sorted array
static int BinarySearch(int[] a, int target)
{
    int lo = 0, hi = a.Length - 1;
    while (lo <= hi)
    {
        int mid = lo + (hi - lo) / 2;      // avoids int overflow of (lo + hi)
        if (a[mid] == target) return mid;
        if (a[mid] < target) lo = mid + 1; else hi = mid - 1;
    }
    return -1;
}
// Built-in: Array.BinarySearch(a, target), List<T>.BinarySearch