1.归并排序
go语言实现demo_test.go
package demoimport ( "testing")func TestMergeSort(t *testing.T) { arr := []int{1, 9, 1, 4, 0, 8, 7} result := Merge(arr) t.Log("result=", result)}func Merge(arr []int) []int { n := len(arr) // 求出切片的长度 m := int(n / 2) // 切片的两头地位 if n <= 1 { return arr } left := Merge(arr[0:m]) right := Merge(arr[m:n]) // 合并 i, j := 0, 0 result := make([]int, 0) for i < m && j < (n-m) { if i < m && j < (n-m) && left[i] <= right[j] { result = append(result, left[i]) i += 1 } else if i < m && j < (n-m) && left[i] > right[j] { result = append(result, right[j]) j += 1 } } result = append(result, right[j:(n-m)]...) result = append(result, left[i:m]...) return result}