Бинарный поиск в Go. sort.Search.

Ответ

sort.Search(n, func(i int) bool { return a[i] >= x }) возвращает минимальный индекс i, для которого условие истинно. Для поиска в отсортированном слайсе: Search возвращает позицию вставки; проверяем a[i] == x. Сложность O(log n). Условие в Search должно быть "f(i) == true => f(i+1) == true".

i := sort.Search(len(a), func(i int) bool { return a[i] >= x })
if i < len(a) && a[i] == x { return i }
return -1
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.