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

Функция sort.SliceStable

Функция sort.SliceStable выполняет стабильную сортировку среза []string, []int или любого другого типа. В отличие от sort.Slice, она гарантирует сохранение исходного порядка равных элементов. Первым параметром функция принимает срез, вторым - функцию сравнения, которая возвращает true, если элемент с индексом i должен стоять перед элементом с индексом j.

Синтаксис

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

Пример

Давайте отсортируем срез целых чисел в порядке возрастания с использованием стабильной сортировки:

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

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

[1 2 3 4 5]

Пример

Давайте отсортируем срез строк в порядке убывания длины:

package main import ( "fmt" "sort" ) func main() { words := []string{"a", "abcde", "abc", "ab", "abcd"} sort.SliceStable(words, func(i, j int) bool { return len(words[i]) > len(words[j]) }) fmt.Println(words) }

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

[abcde abcd abc ab a]

Пример

Рассмотрим преимущество стабильной сортировки на примере сортировки структуры по нескольким полям:

package main import ( "fmt" "sort" ) type Person struct { Name string Age int } func main() { people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 30}, {"David", 25}, } // Сначала сортируем по возрасту sort.SliceStable(people, func(i, j int) bool { return people[i].Age < people[j].Age }) fmt.Println(people) }

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

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

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

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