文章目录
一、整型倒序
二、浮点型三、字符串型四、真的使用的是快速排序算法吗?五、稳定性六、结构体类型排序
一、整型
首先用下里面提供的最简单的例子,排序一下整形
package main
import (
"fmt"
"sort"
)
func main() {
a := sort.IntSlice{2, 8, 3, 7, 9, 4, 1, 6}
fmt.Println("排序前", a)
sort.Sort(a)
fmt.Println("排序后", a)
}
你最好奇的应该是 sort.IntSlice 这个是什么东西。点进去查看源码,可以看到它是 []int 类型并绑定了四个方法,前三个是对排序的对象必须得拥有的(也就是说如果自己想对一个对象排序时,必须实现这些方法),但sort包已经给我们实现了。然后还绑定了一个 Sort() 方法 基于这些信息,我们就可以改造一下前面的示例,直接调用该对象里面绑定的 Sort() 方法,而不是使用sort包中提供的 Sort() 方法,结果不变。
func main() {
a := sort.IntSlice{2, 8, 3, 7, 9, 4, 1, 6}
fmt.Println("排序前", a)
// sort.Sort(a)
a.Sort()
fmt.Println("排序后", a)
}
如果我们不使用里面的提供的 sort.IntSlice 类型,而是自己实现一个,怎么写,直接复制里面 IntSlice 的实现,然后换一个名字即可【苦笑.jpg】
package main
import (
"fmt"
"sort"
)
type paixua []int
func (x paixua) Len() int {
return len(x)
}
func (x paixua) Less(i, j int) bool {
return x[i] |