mirror of
https://github.com/MADTeacher/go_basics.git
synced 2025-11-23 21:34:47 +02:00
43 lines
1.4 KiB
Go
43 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"cmp"
|
|
"fmt"
|
|
"slices"
|
|
)
|
|
|
|
func main() {
|
|
numbers := []int{5, 2, 6, 3, 1, 4}
|
|
words := []string{"banana", "apple", "cherry", "date"}
|
|
|
|
// Сортировка среза
|
|
slices.Sort(numbers)
|
|
fmt.Println("Sort (int):", numbers) // Sort (int): [1 2 3 4 5 6]
|
|
|
|
slices.Sort(words)
|
|
fmt.Println("Sort (string):", words) // [apple banana cherry date]
|
|
|
|
// Настраиваемая сортировка через лямбда-функцию
|
|
mixed := []int{30, 15, 42, 7, 25}
|
|
|
|
// Функция должна возвращать:
|
|
// -1 если первый̆ аргумент меньше второго,
|
|
// 0 если аргументы равны,
|
|
// 1 если первый̆ аргумент больше второго
|
|
// за нас это может рассчитать cmp.Compare
|
|
slices.SortFunc(mixed, func(a, b int) int {
|
|
// Сортировка по последней цифре
|
|
return cmp.Compare(a%10, b%10)
|
|
})
|
|
fmt.Println("SortFunc: ", mixed) // SortFunc: [30 42 15 25 7]
|
|
|
|
// Проверка на то, что элементы среза отсортированы
|
|
sortedCheck := []int{1, 3, 5, 7, 9}
|
|
fmt.Printf("IsSorted(%v): %t\n", sortedCheck,
|
|
slices.IsSorted(sortedCheck)) // IsSorted([1 3 5 7 9]): true
|
|
|
|
unsortedCheck := []int{2, 1, 3, 4}
|
|
fmt.Printf("IsSorted(%v): %t\n", unsortedCheck,
|
|
slices.IsSorted(unsortedCheck)) // IsSorted([2 1 3 4]): false
|
|
}
|