Home > Article > Backend Development > Golang sort specific implementation
Golang is a very popular programming language. Its efficient concurrency and simple syntax make it a very suitable language for back-end and network programming. In Golang, the sort package provides a very convenient way to implement sorting. It can sort arrays, slices, strings and other types. It also provides a very complete custom sorting method. The sort package will be introduced in detail below. How to use and implement it.
sort package built-in function
sort package provides three built-in sorting functions:
The following is how to use these three built-in functions:
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) }
Output results:
[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]
sort package custom sorting
In addition to the built-in In addition to sorting functions, the sort package also provides a very convenient way to customize sorting functions. In Golang, we can implement custom sorting methods by implementing the sort.Interface interface. The sort.Interface interface needs to implement the following three methods:
type Interface interface { // 返回数据集合的元素数量 Len() int // 比较两个元素的大小,返回是否应该交换位置 Less(i, j int) bool // 交换两个元素的位置 Swap(i, j int) }
We implement custom sorting through the sort.Interface interface. Here is an example to sort based on the number of occurrences of letters in a string:
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) }
Output result:
[pear pie apple banana]
As can be seen from the above example, it is very convenient to implement a custom sorting method through the sort.Interface interface. You only need to implement three methods. When custom sorting, we can achieve the sorting method we need by comparing the sizes of two elements.
Notes on using the sort package
When using the sort package, there are some things that need to be paid attention to, as follows:
The above is the detailed content of Golang sort specific implementation. For more information, please follow other related articles on the PHP Chinese website!