Maison > développement back-end > Golang > le corps du texte

Comment utiliser le package de tri pour trier dans Golang

PHPz
Libérer: 2023-04-10 15:41:05
original
931 Les gens l'ont consulté

L'implémentation du tri dans le langage Go est principalement implémentée via le package sort. Le package sort fournit une interface de tri standard, nous permettant de trier facilement différents types de données. Cet article explique comment utiliser le package de tri pour trier dans Golang.

Principe d'implémentation du package sort

Le package sort implémente principalement le tri via l'interface sort.Interface Il dispose de trois méthodes :

  • Len() int : renvoie le nombre d'éléments à trier.
  • Less(i, j int) bool : Si l'élément i doit être classé devant l'élément j, renvoie true sinon, renvoie false ;
  • Swap(i, j int) : échangez les positions des éléments i et j.

Le package de tri fournit les fonctions de tri suivantes :

  • func Ints(a []int) : Trie les tranches de type int par ordre croissant.
  • func Float64s(a []float64) : Trie les tranches de type float64 par ordre croissant.
  • func Strings(a []string) : Trie les tranches de type chaîne par ordre croissant.
  • func IntsAreSorted(a []int) bool : détermine si la tranche de type int a été triée.
  • func Float64sAreSorted(a []float64) bool : Détermine si les tranches de type float64 ont été triées.
  • func StringsAreSorted(a []string) bool : Détermine si les tranches de type chaîne ont été triées.
  • func Sort(data Interface) : trie les données qui implémentent sort.Interface.

Exemple de code

Voici un exemple de code pour trier des tranches de type int :

package main

import (  
    "fmt"
    "sort"
)

func main() {  
    data := []int{9, 6, 3, 8, 5, 2, 7, 4, 1}
    sort.Ints(data)
    fmt.Println(data)
}
Copier après la connexion

Le résultat est :

[1 2 3 4 5 6 7 8 9]
Copier après la connexion

Voici un exemple de code pour trier à l'aide de sort.Interface d'interface :

package main  
import (  
    "fmt"
    "sort"
)

type Person struct {  
    Name string
    Age  int
}

type ByName []Person  
func (this ByName) Len() int {
    return len(this)
}
func (this ByName) Less(i, j int) bool {  
   return this[i].Name < this[j].Name
}
func (this ByName) Swap(i, j int) {  
   this[i], this[j] = this[j], this[i]
}

func main() {  
    people := []Person{
      {"Bob", 31},
      {"John", 42},
      {"Jane", 29},
      {"Michael", 17},
      {"Chris", 51},
      {"Sarah", 37},
    }
    sort.Sort(ByName(people))
    fmt.Println(people)
}
Copier après la connexion

Le résultat de sortie est :

[{Bob 31} {Chris 51} {Jane 29} {John 42} {Michael 17} {Sarah 37}]
Copier après la connexion

Le code ci-dessus définit d'abord une structure Person et un type ByName. Le type ByName implémente trois méthodes de l'interface sort.Interface, qui sont utilisées pour indiquer au package de tri comment comparer deux éléments et comment échanger des éléments. Ensuite, une variable people est définie pour stocker les données de type Person. Enfin, la fonction sort.Sort est appelée pour trier les personnes par ordre croissant par nom et afficher les résultats.

Résumé

Cet article présente la méthode d'utilisation du package de tri pour le tri dans Golang, le principe d'implémentation du package de tri et quelques exemples de codes. Pour que les types de données soient triés, il suffit d'implémenter les trois méthodes dans l'interface sort.Interface. Le package sort fournit déjà des fonctions de tri pour les types de données courants tels que int, float64 et string. Lorsque vous l'utilisez, il vous suffit de le faire. appelle Can.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal