package main
import "fmt"
func Guibin(a []int,p,q,r int) {
n1 := q-p+1
n2 := r-q
Left := make([]int,n1+1)
Right := make([]int,n2+1)
for i := 0; i< n2;i++ {
Right[i] = a[q+i+1]
}
Right[n2] = 9999
//fmt.Println(Right)
for i := 0; i < n1; i++ {
Left[i] = a[i+p]
}
Left[n1] = 9999
// fmt.Println(Left)
i:=0
j:=0
for k:=p;k<r+1;k++ {
if Left[i] <= Right[j] {
a[k] = Left[i]
i++
}else {
a[k] = Right[j]
j++
}
}
fmt.Println(a)
}
func MSort(a []int,p,r int) {
if p < r {
q:=(p+r)/2
MSort(a,p,q)
MSort(a,q+1,r)
Guibin(a,p,q,r)
}
}
func main() {
var a []int
a = []int{6,7,4,3,5,1,9,8,2,10}
MSort(a,0,len(a)-1)
//Guibin(a,0,4,9)
fmt.Println(a)
}
Golang 归并排序
猜你喜欢
转载自blog.csdn.net/zhangyexinaisurui/article/details/81364666
今日推荐
周排行