Функция slices.IsSortedFunc
Функция slices.IsSortedFunc проверяет,
отсортирован ли слайс в порядке возрастания согласно
пользовательской функции сравнения. Она возвращает
true, если слайс отсортирован, и
false в противном случае. Первым параметром
функция принимает слайс для проверки, вторым -
функцию сравнения, которая должна возвращать отрицательное
число, если первый элемент меньше второго, положительное,
если больше, и ноль, если элементы равны.
Синтаксис
slices.IsSortedFunc(slice, cmp)
Пример
Давайте проверим, отсортирован ли слайс целых чисел в порядке возрастания с помощью пользовательской функции сравнения:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{1, 2, 3, 4, 5}
cmp := func(a, b int) int {
return a - b
}
res := slices.IsSortedFunc(numbers, cmp)
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Давайте проверим, отсортирован ли слайс строк
в порядке возрастания (лексикографическом) с использованием
функции strings.Compare:
package main
import (
"fmt"
"slices"
"strings"
)
func main() {
words := []string{"a", "b", "c", "d", "e"}
res := slices.IsSortedFunc(words, strings.Compare)
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Давайте проверим, отсортирован ли слайс в порядке убывания, используя пользовательскую функцию сравнения:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{5, 4, 3, 2, 1}
cmp := func(a, b int) int {
return b - a
}
res := slices.IsSortedFunc(numbers, cmp)
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Давайте проверим, отсортирован ли слайс структур по полю с помощью пользовательской функции:
package main
import (
"fmt"
"slices"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 35},
}
cmp := func(a, b Person) int {
return a.Age - b.Age
}
res := slices.IsSortedFunc(people, cmp)
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Давайте проверим неотсортированный слайс с пользовательской функцией сравнения:
package main
import (
"fmt"
"slices"
)
func main() {
numbers := []int{1, 3, 2, 4, 5}
cmp := func(a, b int) int {
return a - b
}
res := slices.IsSortedFunc(numbers, cmp)
fmt.Println(res)
}
Результат выполнения кода:
false
Смотрите также
-
функцию
slices.IsSorted,
которая проверяет отсортированность слайса со стандартным сравнением -
функцию
slices.SortFunc,
которая сортирует слайс с пользовательской функцией сравнения -
функцию
slices.SortStableFunc,
которая стабильно сортирует слайс с пользовательской функцией сравнения -
функцию
slices.CompareFunc,
которая сравнивает два слайса с использованием пользовательской функции сравнения