Чтобы отсортировать фрагмент в порядке убывания с помощью 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.