题解 | #排序#

排序

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]
	}

}

全部评论

相关推荐

AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务