Это первая статья в Наггетс.До этого я публиковал статьи в одной книге.Когда я зашел,я почувствовал,что книга становится все хуже и хуже,и я хотел переместить все статьи в Наггетс.
представлять
Подобно golang, java и другим языкам, система поставляется с методом сортировки, который позволяет быстро выполнить сортировку. Без лишних слов, давайте сначала добудем каштаны, а потом объясним.
package main
import (
"fmt"
"math/rand"
"sort"
"strconv"
)
func main() {
oneArr := make([]*One, 10)
for i := 0; i < 10; i++ {
oneArr[i] = &One{
Name: "name" + strconv.FormatInt(int64(i), 10),
Num: rand.Intn(1000),
}
}
for _, v := range oneArr {
fmt.Print(v, " ")
}
fmt.Println()
sort.Sort(OneList(oneArr))
for _, v := range oneArr {
fmt.Print(v, " ")
}
fmt.Println()
}
type One struct {
Num int
Name string
}
type OneList []*One
func (this OneList) Len() int {
return len(this)
}
func (this OneList) Less(i, j int) bool {
return this[i].Num < this[j].Num
}
func (this OneList) Swap(i, j int) {
this[i], this[j] = this[j], this[i]
}
результат операции
Сортировать от мала до велика
объяснять
использоватьtypeопределяет[]*OneФрагмент типа OneList. Реализация OneLiitInterface
этот интерфейс
Этот интерфейс находится вsortопределение, прототип
// A type, typically a collection, that satisfies sort.Interface can be
// sorted by the routines in this package. The methods require that the
// elements of the collection be enumerated by an integer index.
type Interface interface {
// Len is the number of elements in the collection.
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
}
-
Len()
Функция возвращает длину сортируемой последовательности
-
Less()
Функция возвращает правила сравнения, необходимые для сортировки, и при соблюдении этого правила выполняется обмен
-
Swap()
Правила перестановки функций для сортировки
ДатьOneListПерепишите эти 3 функции
Создать новый фрагментoneArr, случайным образом заполните данные, затем вызовитеsort
в упаковкеSort()
функция сортировки.
Sort()
В функцию нужно передатьInterface
тип параметра. использовать приведениеoneArr
Перевести вInterface
Типы.
sort
Также в пакете есть функция для реализации обратной сортировки,sort.sort.Reverse()
Возможна обратная сортировка
каштанsort.Sort(sort.Reverse(OneList(oneArr)))
обратная сортировка
результат:Реализовать сортировку от наибольшего к низу
расширять
голангsort
Пакет определяет некоторые часто используемые типы сортировки для нас.
-
type IntSlice []int
Сортировка срезов типа int -
type Float64Slice []float64
Сортировка фрагментов float64 -
type StringSlice []string
Сортировка срезов типа string
Посмотрите на приложение каштана:
package main
import (
"fmt"
"math/rand"
"sort"
)
func main() {
one := make([]int, 10)
for i := 0; i < 10; i++ {
one[i] = int(rand.Int31n(1000))
}
fmt.Println(one)
sort.Sort(sort.IntSlice(one))
fmt.Println(one)
}
результат операции:
Ну, давайте сначала представим это здесь.