1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| package main
import ( "fmt" )
/**
*使用一个二叉树来实现一个插入排序
*/
func main() { intArray := []int{3, 2, 'a', 'c', 'b', 34, 23, 12, 25, 66, 75, 47, 48, 30} Sort(intArray) }
type tree struct { value int left, right *tree }
func Sort(values []int) { var root *tree for _, v := range values { root = add(root, v) } rootArrays := appendVlues(values[:0], root) fmt.Println(rootArrays) }
func appendVlues(values []int, t *tree) []int { if t != nil { values = appendVlues(values, t.left) values = append(values, t.value) values = appendVlues(values, t.right) } return values }
func add(t *tree, value int) *tree { if t == nil { 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 }
|