Функция slices.BinarySearch
Функция slices.BinarySearch выполняет бинарный поиск элемента в отсортированном слайсе.
В первый параметр передается слайс, в котором производится поиск. Во второй параметр передается
значение, которое нужно найти. Функция возвращает два значения: индекс элемента в слайсе
и булево значение, указывающее, был ли элемент найден. Если элемент найден, возвращается
его индекс и true. Если элемент не найден, возвращается индекс, куда его можно вставить,
сохраняя сортировку, и false.
Важно: слайс должен быть отсортированным по возрастанию. Если слайс не отсортирован, результат работы функции будет непредсказуемым.
Синтаксис
slices.BinarySearch(slice, target)
Пример
Давайте найдем элемент 5 в отсортированном слайсе []int{1, 2, 3, 4, 5, 6}:
package main
import (
"fmt"
"slices"
)
func main() {
nums := []int{1, 2, 3, 4, 5, 6}
target := 5
index, found := slices.BinarySearch(nums, target)
fmt.Printf("Index: %d, Found: %t\n", index, found)
}
Результат выполнения кода:
"Index: 4, Found: true"
Пример
Давайте попробуем найти элемент 10, которого нет в слайсе []int{1, 2, 3, 4, 5, 6}:
package main
import (
"fmt"
"slices"
)
func main() {
nums := []int{1, 2, 3, 4, 5, 6}
target := 10
index, found := slices.BinarySearch(nums, target)
fmt.Printf("Index: %d, Found: %t\n", index, found)
}
Результат выполнения кода:
"Index: 6, Found: false"
Пример
Давайте найдем строку "c" в отсортированном слайсе строк []string{"a", "b", "c", "d", "e"}:
package main
import (
"fmt"
"slices"
)
func main() {
letters := []string{"a", "b", "c", "d", "e"}
target := "c"
index, found := slices.BinarySearch(letters, target)
fmt.Printf("Index: %d, Found: %t\n", index, found)
}
Результат выполнения кода:
"Index: 2, Found: true"
Пример
Давайте найдем строку "z" в слайсе строк []string{"a", "b", "c", "d", "e"}:
package main
import (
"fmt"
"slices"
)
func main() {
letters := []string{"a", "b", "c", "d", "e"}
target := "z"
index, found := slices.BinarySearch(letters, target)
fmt.Printf("Index: %d, Found: %t\n", index, found)
}
Результат выполнения кода:
"Index: 5, Found: false"
Смотрите также
-
функцию
slices.BinarySearchFunc,
которая выполняет бинарный поиск с использованием пользовательской функции сравнения -
функцию
slices.Sort,
которая сортирует слайс перед выполнением бинарного поиска -
функцию
slices.Contains,
которая проверяет наличие элемента в слайсе без требования сортировки -
функцию
slices.Index,
которая возвращает индекс первого вхождения элемента в слайсе