1.归并排序
go语言实现demo_test.go
package demo
import (
"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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。