```go
type tree struct {
value int
left,right *tree
}
//就地排序
func Sort(values []int) {
var root *tree
for _,v := range values {
root = add(root,v)
}
appendValues(values[:0],root)
}
//appendValues将元素按顺序追加到values里面,然后返回结果slice
func appendValues(values []int,t *tree) []int {
if t != nil {
values = appendValues(values,t.left)
values = append(values, t.value)
values = appendValues(values, t.right)
}
return values
}
//填充二叉树
func add(t *tree,value int) *tree {
if t ==nil {
//等价于返回&tree{value: value}
t =new(tree)
t.value =value
return t
}
if value < t.value {
t.left = add(t.left, value)
} else {
t.right = add(t.right, value)
}
return t
}
func main() {
var slice []int
for i:= 0;i < 10000;i++ {
slice = append(slice,rand.Intn(100))
}
fmt.Println(time.Now())
Sort(slice)
fmt.Println(time.Now())
}
```
有疑问加站长微信联系(非本文作者))