package mergeSortfunc mergeSort(nums []int) []int { if len(nums) < 2 { return nums } m := len(nums) / 2 l := mergeSort(nums[:m]) r := mergeSort(nums[m:]) return merge(l, r)}func merge(left, right []int) []int { i, j := 0, 0 n, m := len(left), len(right) reslet := make([]int, n+m) for i < n && j < m { if left[i] <= right[j] { reslet[i+j] = left[i] i++ } else { reslet[i+j] = right[j] j++ } } for i < n { reslet[i+j] = left[i] i++ } for j < m { reslet[i+j] = right[j] j++ } return reslet}
package mergeSortimport ( "math/rand" "testing" "time")func TestMergeSort(t *testing.T) { var input [100]int r := rand.New(rand.NewSource(time.Now().Unix())) // 初始化数组input[] for i := 0; i < 100; i++ { input[i] = r.Intn(1000) } output := mergeSort(input[:]) for i := 0; i <= 10; i++ { println(output[i]) }}