实现原理
创建一个适当大小的数组,然后将两个数组中的元素一个个从大到小依次放入其中。
效率分析
代码实现
var aux []intfunc less(v, w int) bool {return v < w}// 将 a[lo, mid] 和 a[mid+1, hi]进行归并func merge(a []int, lo, mid, hi int) {i, j := lo, mid + 1// copy arrayfor k := lo; k <= hi; k++ {aux[k] = a[k]}for k := lo; k <= hi; k++ {if i > mid {a[k] = aux[j]j++} else if j > hi {a[k] = aux[i]i++} else if less(aux[j], aux[i]) {a[k] = aux[j]j++} else {a[k] = aux[i]i++}}}
