3 метода сортировки среза в порядке убывания в Go (Golang)

Чтобы отсортировать фрагмент в порядке убывания с помощью Go (Golang), вы можете использовать встроенный пакет sort. Вот несколько методов, которые вы можете использовать, а также примеры кода:

Метод 1: использование функции sort.Sliceс настраиваемой функцией less.

package main
import (
    "fmt"
    "sort"
)
func main() {
    numbers := []int{5, 2, 9, 1, 6, 3}
    sort.Slice(numbers, func(i, j int) bool {
        return numbers[i] > numbers[j]
    })
    fmt.Println(numbers) // Output: [9 6 5 3 2 1]
}

Метод 2: реализация интерфейса sort.Interface.

package main
import (
    "fmt"
    "sort"
)
type DescendingSlice []int
func (s DescendingSlice) Len() int           { return len(s) }
func (s DescendingSlice) Less(i, j int) bool { return s[i] > s[j] }
func (s DescendingSlice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
func main() {
    numbers := DescendingSlice{5, 2, 9, 1, 6, 3}
    sort.Sort(numbers)
    fmt.Println(numbers) // Output: [9 6 5 3 2 1]
}

Метод 3. Использование функции sort.SliceStableс настраиваемой функцией less.

package main
import (
    "fmt"
    "sort"
)
func main() {
    numbers := []int{5, 2, 9, 1, 6, 3}
    sort.SliceStable(numbers, func(i, j int) bool {
        return numbers[i] > numbers[j]
    })
    fmt.Println(numbers) // Output: [9 6 5 3 2 1]
}

Это три распространенных метода сортировки фрагмента в порядке убывания с помощью Go. Первый метод использует функцию sort.Sliceс настраиваемой функцией less. Второй метод реализует интерфейс sort.Interface. Третий метод использует функцию sort.SliceStableс настраиваемой функцией less.