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

Функция sort.Sort

Функция sort.Sort сортирует элементы слайса, который реализует интерфейс sort.Interface. В первый параметр она принимает значение типа sort.Interface, которое должно определять три метода: Len для получения длины слайса, Less для сравнения двух элементов по индексам и Swap для обмена элементов местами. Функция сортирует слайс по возрастанию согласно условию, заданному в методе Less.

Синтаксис

sort.Sort(data sort.Interface)

Пример с сортировкой числового слайса

Давайте отсортируем слайс чисел []int{5, 2, 8, 1, 9} по возрастанию, используя тип sort.IntSlice, который уже реализует интерфейс sort.Interface:

package main import ( "fmt" "sort" ) func main() { nums := []int{5, 2, 8, 1, 9} sort.Sort(sort.IntSlice(nums)) fmt.Println(nums) }

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

[1 2 5 8 9]

Пример с сортировкой строкового слайса

Рассмотрим сортировку слайса строк []string{"e", "b", "d", "a", "c"} в алфавитном порядке с помощью sort.StringSlice:

package main import ( "fmt" "sort" ) func main() { words := []string{"e", "b", "d", "a", "c"} sort.Sort(sort.StringSlice(words)) fmt.Println(words) }

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

[a b c d e]

Сортировка пользовательской структуры

Давайте отсортируем слайс структур Person по возрасту, реализовав интерфейс sort.Interface для пользовательского типа:

package main import ( "fmt" "sort" ) type Person struct { Name string Age int } type ByAge []Person func (a ByAge) Len() int { return len(a) } func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age } func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func main() { people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 35}, } sort.Sort(ByAge(people)) fmt.Println(people) }

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

[{Bob 25} {Alice 30} {Charlie 35}]

Сортировка в обратном порядке

Для сортировки в обратном порядке используйте sort.Reverse вместе с sort.Sort:

package main import ( "fmt" "sort" ) func main() { nums := []int{5, 2, 8, 1, 9} sort.Sort(sort.Reverse(sort.IntSlice(nums))) fmt.Println(nums) }

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

[9 8 5 2 1]

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

  • функцию sort.Ints,
    которая сортирует слайс чисел по возрастанию
  • функцию sort.Strings,
    которая сортирует слайс строк по алфавиту
  • функцию sort.Stable,
    которая выполняет устойчивую сортировку
  • функцию sort.IsSorted,
    которая проверяет, отсортирован ли слайс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить