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

Parlons de la façon d'utiliser le package de tri Golang

PHPz
Libérer: 2023-04-03 10:16:05
original
654 Les gens l'ont consulté

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.

  1. Présentation du package de tri

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.

  1. Fonction de tri

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)
}
Copier après la connexion

Le résultat de sortie est :

[{Jerry 20} {Tom 25} {Alice 30}]
Copier après la connexion
  1. Fonction inverse

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)
}
Copier après la connexion

Le résultat de sortie est :

[9 6 5 5 5 4 3 3 2 1 1]
Copier après la connexion
  1. Fonction IsSorted

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)))
}
Copier après la connexion

Le résultat de sortie est :

true
false
Copier après la connexion
  1. Tri des types personnalisés

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)
    }
}
Copier après la connexion

Le résultat de sortie est :

Jerry 20
Tom 25
Alice 30
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!