РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
248 of 1593 menu

Функция 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,
    которая возвращает индекс первого вхождения элемента в слайсе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить