Maison > Article > développement back-end > Implémentation spécifique du tri Golang
Golang est un langage de programmation très populaire. Sa concurrence efficace et sa syntaxe simple en font un langage très adapté à la programmation back-end et réseau. Dans Golang, le package de tri fournit un moyen très pratique d'implémenter le tri. Il peut trier des tableaux, des tranches, des chaînes et d'autres types. Il fournit également une méthode de tri personnalisée très complète. Le package de tri sera présenté en détail ci-dessous. et le mettre en œuvre.
Fonctions intégrées du package de tri
Le package de tri fournit trois fonctions de tri intégrées :
Voici comment utiliser ces trois fonctions intégrées :
package main import ( "fmt" "sort" ) func main() { ints := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sort.Ints(ints) fmt.Println(ints) floats := []float64{3.1, 1.4, 4.1, 1.5, 5.9, 2.6, 5.3, 5.5, 3.5} sort.Float64s(floats) fmt.Println(floats) strings := []string{"golang", "is", "an", "awesome", "language"} sort.Strings(strings) fmt.Println(strings) }
Résultats de sortie :
[1 1 2 3 3 4 5 5 5 6 9] [1.4 1.5 2.6 3.1 3.5 4.1 5.3 5.5 5.9] [an awesome golang is language]
tri personnalisé du package de tri
En plus des fonctions de tri intégrées, le package de tri fournit également un moyen très pratique pour personnaliser la fonction de tri. Dans Golang, nous pouvons implémenter des méthodes de tri personnalisées en implémentant l'interface sort.Interface. L'interface sort.Interface doit implémenter les trois méthodes suivantes :
type Interface interface { // 返回数据集合的元素数量 Len() int // 比较两个元素的大小,返回是否应该交换位置 Less(i, j int) bool // 交换两个元素的位置 Swap(i, j int) }
Nous implémentons un tri personnalisé via l'interface sort.Interface Voici un exemple de tri en fonction du nombre d'occurrences de lettres dans une chaîne :
package main import ( "fmt" "sort" ) type StringArray []string func (s StringArray) Len() int { return len(s) } // 自定义排序方式:按照字符串中字母出现次数升序排序 func (s StringArray) Less(i, j int) bool { return less(s[i], s[j]) } // 交换两个元素的位置 func (s StringArray) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // 判断字符串 a 是否小于字符串 b func less(a, b string) bool { if len(a) < len(b) { return true } else if len(a) > len(b) { return false } for i := 0; i < len(a); i++ { if a[i] < b[i] { return true } else if a[i] > b[i] { return false } } return false } func main() { strings := StringArray{"banana", "apple", "pear", "pie"} sort.Sort(strings) fmt.Println(strings) }
Résultat de sortie. :
[pear pie apple banana]
Comme le montre l'exemple ci-dessus, il est très pratique d'implémenter une méthode de tri personnalisée via l'interface sort.Interface. Il vous suffit d'implémenter trois méthodes. Lors du tri personnalisé, nous pouvons obtenir la méthode de tri dont nous avons besoin en comparant les tailles de deux éléments.
Remarques sur l'utilisation du package de tri
Il y a certaines choses auxquelles vous devez faire attention lorsque vous utilisez le package de tri, comme suit :
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!