Функция sort.SliceIsSorted

Функция sort.SliceIsSorted проверяет, отсортирован ли срез в порядке возрастания согласно пользовательской функции сравнения. Она возвращает true, если срез отсортирован, и false в противном случае. Первым параметром функция принимает срез, вторым - функцию сравнения, которая должна возвращать true, если элемент с индексом i должен стоять перед элементом с индексом j.

Синтаксис

gosort.SliceIsSorted(slice, func(i, j int) bool {
  return slice[i] < slice[j]
})

Пример

Давайте проверим, отсортирован ли срез целых чисел по возрастанию:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  nums := []int{1, 2, 3, 4, 5}
  res := sort.SliceIsSorted(nums, func(i, j int) bool {
    return nums[i] < nums[j]
  })
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Пример

Давайте проверим, отсортирован ли срез целых чисел по убыванию:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  nums := []int{5, 4, 3, 2, 1}
  res := sort.SliceIsSorted(nums, func(i, j int) bool {
    return nums[i] > nums[j]
  })
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Пример

Давайте проверим неотсортированный срез строк:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  words := []string{"apple", "banana", "cherry", "date"}
  res := sort.SliceIsSorted(words, func(i, j int) bool {
    return words[i] < words[j]
  })
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Смотрите также

  • функцию sort.Slice,
    которая сортирует срез по пользовательской функции
  • функцию sort.IntsAreSorted,
    которая проверяет отсортированность среза целых чисел
  • функцию sort.StringsAreSorted,
    которая проверяет отсортированность среза строк
  • функцию sort.Float64sAreSorted,
    которая проверяет отсортированность среза чисел с плавающей точкой