AcWing 787. 归并排序-golang
原题链接
简单
作者:
渲染
,
2024-03-30 14:34:03
,
所有人可见
,
阅读 1
package main
import "fmt"
var temp = [100000]int{}
func Merge_sort(nums []int,left int,right int){
if left >= right{
return
}
mid := (left+right) >> 1
Merge_sort(nums,left,mid)
Merge_sort(nums,mid+1,right)
i ,j := left,mid+1
var k int
for i<=mid && j <= right {
if nums[i] >= nums[j]{
temp[k] = nums[j]
j++
}else{
temp[k] = nums[i]
i++
}
k++
}
for i <= mid{
temp[k] = nums[i]
i++
k++
}
for j <= right{
temp[k] = nums[j]
j++
k++
}
i = left
j = 0
for i <= right{
nums[i] = temp[j]
j++
i++
}
}
func main(){
var n int
fmt.Scan(&n)
nums := make([]int,n)
for i:=0;i<n;i++{
fmt.Scan(&nums[i])
}
Merge_sort(nums,0,n-1)
for i:=0;i<n;i++{
fmt.Printf("%d ",nums[i])
}
}