请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我用go语言实现归并算法的结果有问题

package main

import "fmt"

func __merge(arr[] int, l int, mid int,r int){

	var aux[] int
	for i:=l;i<=r;i++{
		aux=append(aux,arr[i])
	}
	fmt.Println( aux[:])//观察归并的过程
	i:=l
	j:=mid+1
	for k:=l;k<=r;k++{
		if i>mid{
			arr[k]=aux[j-l]
		}else if j>r{
			arr[k]=aux[i-l]
		}else if aux[i-l]<aux[j-l]{
			arr[k]=aux[i-l]
			i++
		}else{
			arr[k]=aux[j-l]
			j++
		}
	}
}

func __mergeSort(arr[] int,l int,r int){
	if l>=r{
		return
	}
	mid:=(l+r)/2
	__mergeSort(arr,l,mid)
	__mergeSort(arr,mid+1,r)
	__merge(arr,l,mid,r)

}

func mergeSort(arr[] int)[] int{
	size:=len(arr)
	__mergeSort(arr,0,size-1)
	return arr
}
func main(){
	//fmt.Println("Yo Yo")
  arr:=[...]int{10,90,80,7,6,5,4,3,2,1,23,2,5}
  fmt.Println(mergeSort(arr[:]))
	fmt.Println(len(arr))//切片的大小
}

终端输出结果:
[10 90]
[80 7]
[10 90 7 80]
[6 5]
[5 6 4]
[7 10 80 90 4 5 5]
[3 2]
[2 3 1]
[23 2]
[2 23 5]
[1 2 2 2 5 23]
[4 5 5 7 7 7 7 1 2 2 2 5 5]
[1 2 2 2 4 5 5 5 5 5 5 5 5]
13

正在回答 回答被采纳积分+3

插入代码

1回答

liuyubobobo 2020-05-13 10:44:27

抱歉,我不了解 go 语言,你需要去 go 语言相关社区讨论你的代码具体哪里有问题。


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕慕1545788 #1
    问题已解决,有两个地方少写了i++ 和j++  哈哈
    回复 有任何疑惑可以回复我~ 2020-05-13 10:47:10
  • liuyubobobo 回复 提问者 慕慕1545788 #2
    赞!继续加油!:)
    回复 有任何疑惑可以回复我~ 2020-05-13 10:48:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信