Сортировка с использованием пакета сортировки golang

Go
Сортировка с использованием пакета сортировки golang

Это первая статья в Наггетс.До этого я публиковал статьи в одной книге.Когда я зашел,я почувствовал,что книга становится все хуже и хуже,и я хотел переместить все статьи в Наггетс.

представлять

Подобно 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)

}

результат операции:

Ну, давайте сначала представим это здесь.