30 lines
501 B
Go
30 lines
501 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func Less(lhs, rhs int) bool {
|
|
return lhs < rhs
|
|
}
|
|
|
|
func Greater(lhs, rhs int) bool {
|
|
return lhs > rhs
|
|
}
|
|
|
|
func Sort(numbers []int, predicate func(int, int) bool) {
|
|
for i := 0; i < len(numbers); i++ {
|
|
for j := i; j > 0 && predicate(numbers[j-1], numbers[j]); j-- {
|
|
numbers[j-1], numbers[j] = numbers[j], numbers[j-1]
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
numbers := []int{1, 2, 5, 4, 3}
|
|
|
|
Sort(numbers, Less)
|
|
fmt.Println(numbers)
|
|
|
|
Sort(numbers, Greater)
|
|
fmt.Println(numbers)
|
|
}
|