Как реализовать binary search?

Junior
313 просмотров
AFK Offer AI

Ищем в отсортированном массиве за O(log n). low, high := 0, len(arr)-1. В цикле mid := low + (high-low)/2 (не (low+high)/2 — overflow!). Если arr[mid] == target — нашли. Если arr[mid] < target — low = mid+1. Иначе high = mid-1. Цикл пока low <= high. В Go есть sort.Search и slices.BinarySearch. Частые ошибки: неправильные границы (бесконечный цикл), overflow при вычислении mid, off-by-one при low <= high vs low < high.

Следующий вопрос

Как найти goroutine leak?