Golang est un langage de programmation efficace, simple et fiable, largement utilisé dans le développement côté serveur et la programmation système. Dans Golang, le package de tri fournit une fonction de tri riche qui peut répondre à divers besoins de tri. Cet article explique comment utiliser le package de tri Golang.
Le package de tri fournit des fonctions de tri sur différents types de séquences, telles que []int, []float64, []string, etc. Il fournit également une interface de tri générale sort.Interface, qui peut être utilisée pour définir des types de tri personnalisés. Les algorithmes de tri fournis par le package de tri sont un tri rapide optimisé et un tri par tas. Dans le package de tri, il existe trois fonctions principales : Sort, Reverse et IsSorted.
La fonction de tri trie une séquence qui implémente sort.Interface par ordre croissant. L'interface sort.Interface définit trois méthodes : Len, Swap et Less. Parmi elles, la méthode Len renvoie la longueur de la séquence, la méthode Swap échange les positions de deux éléments et la méthode Less renvoie si l'élément en position i est plus petit que l'élément en position j. Un exemple est le suivant :
package main import ( "fmt" "sort" ) type persons []struct { name string age int } func (ps persons) Len() int { return len(ps) } func (ps persons) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] } func (ps persons) Less(i, j int) bool { return ps[i].age < ps[j].age } func main() { ps := persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}} sort.Sort(ps) fmt.Println(ps) }
Le résultat de sortie est :
[{Jerry 20} {Tom 25} {Alice 30}]
La fonction Reverse renvoie une séquence inverse d'une séquence qui implémente l'interface sort.Interface. L'exemple est le suivant :
package main import ( "fmt" "sort" ) func main() { ns := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sort.Sort(sort.Reverse(sort.IntSlice(ns))) fmt.Println(ns) }
Le résultat de sortie est :
[9 6 5 5 5 4 3 3 2 1 1]
La fonction IsSorted détermine si une séquence qui implémente sort.Interface a été triée selon les règles de la méthode Less. Un exemple est le suivant :
package main import ( "fmt" "sort" ) func main() { ns := []int{1, 2, 3, 3, 4, 5} fmt.Println(sort.IsSorted(sort.IntSlice(ns))) ns = []int{1, 2, 3, 4, 3, 5} fmt.Println(sort.IsSorted(sort.IntSlice(ns))) }
Le résultat de sortie est :
true false
Nous pouvons également trier en fonction d'attributs spécifiques des types personnalisés. L'exemple est le suivant :
package main import ( "fmt" "sort" ) type Person struct { Name string Age int } type Persons []*Person func (ps Persons) Len() int { return len(ps) } func (ps Persons) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] } func (ps Persons) Less(i, j int) bool { return ps[i].Age < ps[j].Age } func main() { ps := Persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}} sort.Sort(ps) for _, p := range ps { fmt.Printf("%s %d\n", p.Name, p.Age) } }
Le résultat de sortie est :
Jerry 20 Tom 25 Alice 30
Résumé :
Le package de tri Golang fournit une fonction de tri puissante qui peut trier différents types de séquences. Nous pouvons également utiliser l'interface sort.Interface pour définir des types de tri personnalisés. Les algorithmes de tri fournis par le package de tri sont optimisés pour le tri rapide et le tri par tas, ils sont donc plus efficaces. L'ensemble du package de tri est simple à utiliser et a une logique claire. Il s'agit d'un package indispensable dans Golang.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!