| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | package mainimport (	"fmt"	"math/rand"	"time")type ints []intfunc (is ints) merge(aux []int, lo, mid, hi int) {	for i, j, k := lo, mid+1, lo; k <= hi; k++ {		if mid < i {			aux[k] = is[j]			j++		} else if hi < j {			aux[k] = is[i]			i++		} else if is[i] < is[j] {			aux[k] = is[i]			i++		} else {			aux[k] = is[j]			j++		}	}	copy(is[lo:hi+1], aux[lo:hi+1])}func (is ints) msort(aux []int, lo, hi int) {	if hi <= lo {		return	}	mid := lo + (hi-lo)/2	is.msort(aux, lo, mid)	is.msort(aux, mid+1, hi)	is.merge(aux, lo, mid, hi)}func (is ints) sort() {	l := len(is)	aux := make([]int, l)	is.msort(aux, 0, l-1)}func main() {	var n int	fmt.Scan(&n)	var list ints = make([]int, n)	rand.Seed(time.Now().Unix())	for i := range list {		list[i] = rand.Intn(2 * n)	}	fmt.Println(list)	list.sort()	fmt.Println(list)}
 |