8ac89195db
constraints.Ordered to make BisectRight() statically type-safe.
14 lines
431 B
Go
14 lines
431 B
Go
package internal
|
|
|
|
import (
|
|
"sort"
|
|
|
|
"golang.org/x/exp/constraints"
|
|
)
|
|
|
|
// BisectRight returns the index of the first element in the list that is greater than or equal to the value.
|
|
// https://stackoverflow.com/questions/29959506/is-there-a-go-analog-of-pythons-bisect-module
|
|
func BisectRight[T constraints.Ordered](arr []T, val T) uint32 {
|
|
i := sort.Search(len(arr), func(i int) bool { return arr[i] >= val })
|
|
return uint32(i)
|
|
}
|