题解 | #排序#
排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
package main func MySort(arr []int) []int { // write code here le := len(arr) tmp := make([]int, le, le) doSort(arr, tmp, 0, le-1) return arr } func doSort(arr []int, tmp []int, st int, en int) { //fmt.Println(st) //fmt.Println(en) if st >= en { return } mid := (st + en) / 2 doSort(arr, tmp, st, mid) doSort(arr, tmp, mid+1, en) for i, j, k := st, mid+1, st; i <= mid || j <= en; { if i > mid || (j <= en && arr[i] > arr[j]) { tmp[k] = arr[j] j++ k++ continue } if j > en || (i <= mid && arr[i] <= arr[j]) { tmp[k] = arr[i] i++ k++ } } for i := st; i <= en; i++ { arr[i] = tmp[i] } }