Функция sort.SearchInts
Функция sort.SearchInts выполняет бинарный поиск
заданного числа в отсортированном слайсе целых чисел.
В первый параметр передается слайс []int,
во второй - искомое значение int.
Функция возвращает индекс найденного элемента.
Если элемент не найден, возвращается индекс,
по которому его нужно вставить для сохранения порядка
сортировки.
Синтаксис
sort.SearchInts(slice, value)
Пример
Давайте найдем число 3 в отсортированном слайсе:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 2, 3, 4, 5}
res := sort.SearchInts(nums, 3)
fmt.Println(res)
}
Результат выполнения кода:
2
Пример
Попробуем найти число, которого нет в слайсе:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 2, 4, 5, 6}
res := sort.SearchInts(nums, 3)
fmt.Println(res)
}
Результат выполнения кода:
2
Функция вернула индекс 2, куда нужно вставить
число 3, чтобы слайс остался отсортированным.
Пример
Если искомое значение меньше всех элементов слайса,
функция вернет 0:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 6, 7, 8, 9}
res := sort.SearchInts(nums, 1)
fmt.Println(res)
}
Результат выполнения кода:
0
Пример
Если искомое значение больше всех элементов слайса, функция вернет длину слайса:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 2, 3, 4, 5}
res := sort.SearchInts(nums, 10)
fmt.Println(res)
}
Результат выполнения кода:
5
Пример
Важно, что слайс должен быть отсортирован по возрастанию. Если передать несортированный слайс, результат будет непредсказуемым:
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 1, 4, 2, 3}
res := sort.SearchInts(nums, 2)
fmt.Println(res)
}
Результат выполнения кода:
4
Хотя число 2 находится в слайсе, функция вернула
индекс 4, так как слайс не был отсортирован.
Смотрите также
-
функцию
sort.Search,
которая выполняет бинарный поиск с пользовательской функцией сравнения -
функцию
sort.SearchFloat64s,
которая ищет число с плавающей точкой в отсортированном слайсе -
функцию
sort.SearchStrings,
которая ищет строку в отсортированном слайсе строк -
функцию
sort.Ints,
которая сортирует слайс целых чисел по возрастанию